mirror of
https://github.com/nginx/nginx.git
synced 2024-11-27 23:49:00 +08:00
Entity tags: set for static respones.
This commit is contained in:
parent
8b00c87c38
commit
eb7c38a49a
@ -194,6 +194,10 @@ ngx_http_flv_handler(ngx_http_request_t *r)
|
||||
r->headers_out.content_length_n = len;
|
||||
r->headers_out.last_modified_time = of.mtime;
|
||||
|
||||
if (ngx_http_set_etag(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
if (ngx_http_set_content_type(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
@ -207,6 +207,10 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
|
||||
r->headers_out.content_length_n = of.size;
|
||||
r->headers_out.last_modified_time = of.mtime;
|
||||
|
||||
if (ngx_http_set_etag(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
if (ngx_http_set_content_type(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
@ -586,6 +586,10 @@ ngx_http_mp4_handler(ngx_http_request_t *r)
|
||||
r->headers_out.status = NGX_HTTP_OK;
|
||||
r->headers_out.last_modified_time = of.mtime;
|
||||
|
||||
if (ngx_http_set_etag(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
if (ngx_http_set_content_type(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
@ -220,6 +220,10 @@ ngx_http_static_handler(ngx_http_request_t *r)
|
||||
r->headers_out.content_length_n = of.size;
|
||||
r->headers_out.last_modified_time = of.mtime;
|
||||
|
||||
if (ngx_http_set_etag(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
if (ngx_http_set_content_type(r) != NGX_OK) {
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
@ -1808,6 +1808,35 @@ ngx_http_set_exten(ngx_http_request_t *r)
|
||||
}
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_http_set_etag(ngx_http_request_t *r)
|
||||
{
|
||||
ngx_table_elt_t *etag;
|
||||
|
||||
etag = ngx_list_push(&r->headers_out.headers);
|
||||
if (etag == NULL) {
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
etag->hash = 1;
|
||||
ngx_str_set(&etag->key, "ETag");
|
||||
|
||||
etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
|
||||
if (etag->value.data == NULL) {
|
||||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
|
||||
r->headers_out.last_modified_time,
|
||||
r->headers_out.content_length_n)
|
||||
- etag->value.data;
|
||||
|
||||
r->headers_out.etag = etag;
|
||||
|
||||
return NGX_OK;
|
||||
}
|
||||
|
||||
|
||||
ngx_int_t
|
||||
ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
|
||||
ngx_str_t *ct, ngx_http_complex_value_t *cv)
|
||||
|
@ -480,6 +480,7 @@ ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r,
|
||||
void *ngx_http_test_content_type(ngx_http_request_t *r, ngx_hash_t *types_hash);
|
||||
ngx_int_t ngx_http_set_content_type(ngx_http_request_t *r);
|
||||
void ngx_http_set_exten(ngx_http_request_t *r);
|
||||
ngx_int_t ngx_http_set_etag(ngx_http_request_t *r);
|
||||
ngx_int_t ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
|
||||
ngx_str_t *ct, ngx_http_complex_value_t *cv);
|
||||
u_char *ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *name,
|
||||
|
Loading…
Reference in New Issue
Block a user