GUARD_RESPONSE,
} guard;
ngx_list_t header_list;
+ ngx_js_tb_elt_t *content_type;
} ngx_js_headers_t;
* request->cache_mode = CACHE_MODE_DEFAULT;
* request->credentials = CREDENTIALS_SAME_ORIGIN;
* request->mode = MODE_NO_CORS;
+ * request->headers.content_type = NULL;
*/
ngx_memzero(request, sizeof(ngx_js_request_t));
* just allocating a new one.
*/
+ ngx_memset(&request->headers, 0, sizeof(ngx_js_headers_t));
+ request->headers.guard = GUARD_REQUEST;
+
rc = ngx_list_init(&request->headers.header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
return NJS_ERROR;
}
- if (njs_value_is_string(value)) {
+ if (request->headers.content_type == NULL
+ && njs_value_is_string(value))
+ {
ret = ngx_js_headers_append(vm, &request->headers,
(u_char *) "Content-Type",
njs_length("Content-Type"),
h->value.len = vlen;
h->next = NULL;
+ if (len == njs_strlen("Content-Type")
+ && ngx_strncasecmp(name, (u_char *) "Content-Type", len) == 0)
+ {
+ headers->content_type = h;
+ }
+
return NJS_OK;
}
}
}
+ if (name.length == njs_strlen("Content-Type")
+ && ngx_strncasecmp(name.start, (u_char *) "Content-Type", name.length)
+ == 0)
+ {
+ headers->content_type = NULL;
+ }
+
njs_value_undefined_set(retval);
return NJS_OK;
var body = await r.text();
return `\${body}: \${r.headers.get('Content-Type')}`;
}, 'ABC: text/plain;charset=UTF-8'],
+ ['user content type', async () => {
+ var r = new Request("http://nginx.org",
+ {body: 'ABC',
+ headers: {'Content-Type': 'text/html'}});
+ return r.headers.get('Content-Type');
+ }, 'text/html'],
+ ['user content type from Headers()', async () => {
+ var h = new Headers();
+ h.append('Content-Type', 'text/html');
+ var r = new Request("http://nginx.org",
+ {body: 'ABC', headers: h});
+ return r.headers.get('Content-Type');
+ }, 'text/html'],
+ ['user content type deleted', async () => {
+ var h = new Headers();
+ h.append('Content-Type', 'text/html');
+ h.delete('Content-Type');
+ var r = new Request("http://nginx.org",
+ {body: 'ABC', headers: h});
+ return r.headers.get('Content-Type');
+ }, 'text/plain;charset=UTF-8'],
['GET body', () => {
try {
var r = new Request("http://nginx.org", {body: 'ABC'});