fix: delete headers with undefined value (#13880)
This commit is contained in:
parent
539546ab74
commit
ed344a882b
|
|
@ -132,6 +132,8 @@ export function headersObjectToArray(headers: HeadersObject, separator?: string,
|
||||||
const result: HeadersArray = [];
|
const result: HeadersArray = [];
|
||||||
for (const name in headers) {
|
for (const name in headers) {
|
||||||
const values = headers[name];
|
const values = headers[name];
|
||||||
|
if (values === undefined)
|
||||||
|
continue;
|
||||||
if (separator) {
|
if (separator) {
|
||||||
const sep = name.toLowerCase() === 'set-cookie' ? setCookieSeparator : separator;
|
const sep = name.toLowerCase() === 'set-cookie' ? setCookieSeparator : separator;
|
||||||
for (const value of values.split(sep!))
|
for (const value of values.split(sep!))
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,44 @@ it('should amend HTTP headers', async ({ page, server }) => {
|
||||||
expect(request.headers['foo']).toBe('bar');
|
expect(request.headers['foo']).toBe('bar');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should delete header with undefined value', async ({ page, server, browserName }) => {
|
||||||
|
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/13106' });
|
||||||
|
|
||||||
|
await page.goto(server.PREFIX + '/empty.html');
|
||||||
|
server.setRoute('/something', (request, response) => {
|
||||||
|
response.writeHead(200, { 'Access-Control-Allow-Origin': '*' });
|
||||||
|
response.end('done');
|
||||||
|
});
|
||||||
|
let interceptedRequest;
|
||||||
|
await page.route(server.PREFIX + '/something', async (route, request) => {
|
||||||
|
interceptedRequest = request;
|
||||||
|
const headers = await request.allHeaders();
|
||||||
|
route.continue({
|
||||||
|
headers: {
|
||||||
|
...headers,
|
||||||
|
foo: undefined
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const [text, serverRequest] = await Promise.all([
|
||||||
|
page.evaluate(async url => {
|
||||||
|
const data = await fetch(url, {
|
||||||
|
headers: {
|
||||||
|
foo: 'a',
|
||||||
|
bar: 'b',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return data.text();
|
||||||
|
}, server.PREFIX + '/something'),
|
||||||
|
server.waitForRequest('/something')
|
||||||
|
]);
|
||||||
|
expect(text).toBe('done');
|
||||||
|
expect(interceptedRequest.headers()['foo']).toEqual('a');
|
||||||
|
expect(serverRequest.headers.foo).toBeFalsy();
|
||||||
|
expect(serverRequest.headers.bar).toBe('b');
|
||||||
|
});
|
||||||
|
|
||||||
it('should amend method', async ({ page, server }) => {
|
it('should amend method', async ({ page, server }) => {
|
||||||
const sRequest = server.waitForRequest('/sleep.zzz');
|
const sRequest = server.waitForRequest('/sleep.zzz');
|
||||||
await page.goto(server.EMPTY_PAGE);
|
await page.goto(server.EMPTY_PAGE);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue