Skip to content

Commit

Permalink
chore: partially revert electron#21552
Browse files Browse the repository at this point in the history
  • Loading branch information
dsanders11 committed Mar 16, 2022
1 parent 2657383 commit 315f455
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 24 deletions.
33 changes: 11 additions & 22 deletions lib/browser/api/net.ts
Expand Up @@ -59,29 +59,18 @@ class IncomingMessage extends Readable {

get headers () {
const filteredHeaders: Record<string, string | string[]> = {};
const { rawHeaders } = this._responseHead;
rawHeaders.forEach(header => {
const keyLowerCase = header.key.toLowerCase();
if (Object.prototype.hasOwnProperty.call(filteredHeaders, keyLowerCase) &&
discardableDuplicateHeaders.has(keyLowerCase)) {
// do nothing with discardable duplicate headers
const { headers } = this._responseHead;
Object.keys(headers).forEach(header => {
if (header === 'set-cookie') {
// keep set-cookie as an array per Node.js rules
// see https://nodejs.org/api/http.html#http_message_headers
filteredHeaders[header] = headers[header];
} else if (discardableDuplicateHeaders.has(header)) {
// do not join discardable duplicate headers, instead keep the first
filteredHeaders[header] = headers[header][0];
} else {
if (keyLowerCase === 'set-cookie') {
// keep set-cookie as an array per Node.js rules
// see https://nodejs.org/api/http.html#http_message_headers
if (Object.prototype.hasOwnProperty.call(filteredHeaders, keyLowerCase)) {
(filteredHeaders[keyLowerCase] as string[]).push(header.value);
} else {
filteredHeaders[keyLowerCase] = [header.value];
}
} else {
// for non-cookie headers, the values are joined together with ', '
if (Object.prototype.hasOwnProperty.call(filteredHeaders, keyLowerCase)) {
filteredHeaders[keyLowerCase] += `, ${header.value}`;
} else {
filteredHeaders[keyLowerCase] = header.value;
}
}
// for everything else, the values are joined together with ', '
filteredHeaders[header] = headers[header].join(', ');
}
});
return filteredHeaders;
Expand Down
3 changes: 1 addition & 2 deletions shell/browser/api/electron_api_url_loader.cc
Expand Up @@ -578,9 +578,8 @@ void SimpleURLLoaderWrapper::OnResponseStarted(
gin::Dictionary dict = gin::Dictionary::CreateEmpty(isolate);
dict.Set("statusCode", response_head.headers->response_code());
dict.Set("statusMessage", response_head.headers->GetStatusText());
dict.Set("headers", response_head.headers.get());
dict.Set("httpVersion", response_head.headers->GetHttpVersion());
// Note that |response_head.headers| are filtered by Chromium and should not
// be used here.
DCHECK(!response_head.raw_response_headers.empty());
dict.Set("rawHeaders", response_head.raw_response_headers);
Emit("response-started", final_url, dict);
Expand Down
1 change: 1 addition & 0 deletions typings/internal-ambient.d.ts
Expand Up @@ -147,6 +147,7 @@ declare namespace NodeJS {
statusCode: number;
statusMessage: string;
httpVersion: { major: number, minor: number };
headers: Record<string, string[]>;
rawHeaders: { key: string, value: string }[];
};

Expand Down

0 comments on commit 315f455

Please sign in to comment.