fix: resend overridden headers on redirect without merging (#29605)

Reference https://github.com/microsoft/playwright/issues/13106
This commit is contained in:
Yury Semikhatsky 2024-02-22 07:44:14 -08:00 committed by GitHub
parent e846afeb98
commit 5ca8e17a2d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -287,11 +287,8 @@ export class CRNetworkManager {
if (requestPausedEvent) { if (requestPausedEvent) {
// We do not support intercepting redirects. // We do not support intercepting redirects.
if (redirectedFrom || (!this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled)) { if (redirectedFrom || (!this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled)) {
let headers = undefined;
const previousHeaderOverrides = redirectedFrom?._originalRequestRoute?._alreadyContinuedParams?.headers;
// Chromium does not preserve header overrides between redirects, so we have to do it ourselves. // Chromium does not preserve header overrides between redirects, so we have to do it ourselves.
if (previousHeaderOverrides) const headers = redirectedFrom?._originalRequestRoute?._alreadyContinuedParams?.headers;
headers = network.mergeHeaders([headersObjectToArray(requestPausedEvent.request.headers, '\n'), previousHeaderOverrides]);
this._session._sendMayFail('Fetch.continueRequest', { requestId: requestPausedEvent.requestId, headers }); this._session._sendMayFail('Fetch.continueRequest', { requestId: requestPausedEvent.requestId, headers });
} else { } else {
route = new RouteImpl(this._session, requestPausedEvent.requestId); route = new RouteImpl(this._session, requestPausedEvent.requestId);