Content-Type [PATCH]
Witold Filipczyk
witekfl at gazeta.pl
Tue Jun 16 11:35:55 UTC 2015
On Tue, Jun 16, 2015 at 12:37:39PM +0200, Lukas Tribus wrote:
> > Hi,
> > <?php
> > header('Content-Type: text/html;');
>
> Thats invalid. Either:
> text/html; charset=iso-8859-1
> or
> text/html
>
> but not with a trailing semicolon.
Content-Type is used in many places in nginx, for example in the sub module.
In the above example, the content-type is cheated.
# HG changeset patch
# User Witold Filipczyk <witekfl at gazeta.pl>
# Date 1434454090 -7200
# Tue Jun 16 13:28:10 2015 +0200
# Node ID 8ac7373110ad140bbed0b9eef3add41b769c0ba6
# Parent cca856715722ff7f6de9e741fedd0d2759b26b74
Mark the first semicolon as the end of the Content-Type.
diff -r cca856715722 -r 8ac7373110ad src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c Wed May 20 22:44:00 2015 +0300
+++ b/src/http/ngx_http_upstream.c Tue Jun 16 13:28:10 2015 +0200
@@ -4568,6 +4568,7 @@
ngx_uint_t offset)
{
u_char *p, *last;
+ int semicolon = 0;
r->headers_out.content_type_len = h->value.len;
r->headers_out.content_type = h->value;
@@ -4579,7 +4580,10 @@
continue;
}
- last = p;
+ if (!semicolon) {
+ semicolon = 1;
+ r->headers_out.content_type_len = p - h->value.data;
+ }
while (*++p == ' ') { /* void */ }
@@ -4593,8 +4597,6 @@
p += 8;
- r->headers_out.content_type_len = last - h->value.data;
-
if (*p == '"') {
p++;
}
More information about the nginx-devel
mailing list