mirror of
https://github.com/ading2210/libcurl.js.git
synced 2025-05-13 14:30:02 -04:00
fix handling of duplicate http headers
This commit is contained in:
parent
ca137c3cd2
commit
15179fae43
4 changed files with 15 additions and 6 deletions
|
@ -76,6 +76,8 @@ Most of the standard Fetch API's features are supported, with the exception of:
|
|||
- Sending credentials/cookies automatically
|
||||
- Caching
|
||||
|
||||
The response may contain multiple HTTP headers with the same name, which the `Headers` object isn't able to properly represent. If this matters to you, use `response.raw_headers`, which is an array of key value pairs, instead of `response.headers`.
|
||||
|
||||
Note that there is a hard limit of 50 active TCP connections due to emscripten limitations.
|
||||
|
||||
### Creating WebSocket Connections:
|
||||
|
|
|
@ -132,8 +132,11 @@ function create_response(response_data, response_info) {
|
|||
writable: false,
|
||||
value: new Headers()
|
||||
});
|
||||
for (let header_name in response_info.headers) {
|
||||
let header_value = response_info.headers[header_name];
|
||||
Object.defineProperty(response_obj, "raw_headers", {
|
||||
writable: false,
|
||||
value: response_info.headers
|
||||
});
|
||||
for (let [header_name, header_value] of response_info.headers) {
|
||||
response_obj.headers.append(header_name, header_value);
|
||||
}
|
||||
|
||||
|
|
|
@ -167,12 +167,16 @@ void finish_request(CURLMsg *curl_msg) {
|
|||
cJSON* url_item = cJSON_CreateString(response_url);
|
||||
cJSON_AddItemToObject(response_json, "url", url_item);
|
||||
|
||||
cJSON* headers_item = cJSON_CreateObject();
|
||||
cJSON* headers_item = cJSON_CreateArray();
|
||||
struct curl_header *prev_header = NULL;
|
||||
struct curl_header *header = NULL;
|
||||
while ((header = curl_easy_nextheader(http_handle, CURLH_HEADER, -1, prev_header))) {
|
||||
cJSON* header_entry = cJSON_CreateString(header->value);
|
||||
cJSON_AddItemToObject(headers_item, header->name, header_entry);
|
||||
cJSON* header_key_entry = cJSON_CreateString(header->name);
|
||||
cJSON* header_value_entry = cJSON_CreateString(header->value);
|
||||
cJSON* header_pair_item = cJSON_CreateArray();
|
||||
cJSON_AddItemToArray(header_pair_item, header_key_entry);
|
||||
cJSON_AddItemToArray(header_pair_item, header_value_entry);
|
||||
cJSON_AddItemToArray(headers_item, header_pair_item);
|
||||
prev_header = header;
|
||||
}
|
||||
cJSON_AddItemToObject(response_json, "headers", headers_item);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "libcurl.js",
|
||||
"version": "0.4.0",
|
||||
"version": "0.4.1",
|
||||
"description": "An experimental port of libcurl to WebAssembly for use in the browser.",
|
||||
"main": "libcurl.mjs",
|
||||
"scripts": {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue