mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
fix(Network): fulfill security details for response redirects (#2025)
This patch: - starts fulfilling security details for redirect responses - changes `response.securityDetails()` to return null if the response is served over non-secure connection
This commit is contained in:
@@ -153,7 +153,7 @@ class NetworkManager extends EventEmitter {
|
||||
if (event.redirectUrl) {
|
||||
const request = this._interceptionIdToRequest.get(event.interceptionId);
|
||||
if (request) {
|
||||
this._handleRequestRedirect(request, event.responseStatusCode, event.responseHeaders, false /* fromDiskCache */, false /* fromServiceWorker */);
|
||||
this._handleRequestRedirect(request, event.responseStatusCode, event.responseHeaders, false /* fromDiskCache */, false /* fromServiceWorker */, null /* securityDetails */);
|
||||
this._handleRequestStart(request._requestId, event.interceptionId, event.redirectUrl, event.resourceType, event.request, event.frameId);
|
||||
}
|
||||
return;
|
||||
@@ -184,9 +184,10 @@ class NetworkManager extends EventEmitter {
|
||||
* @param {!Object} redirectHeaders
|
||||
* @param {boolean} fromDiskCache
|
||||
* @param {boolean} fromServiceWorker
|
||||
* @param {?Object} securityDetails
|
||||
*/
|
||||
_handleRequestRedirect(request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker) {
|
||||
const response = new Response(this._client, request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker);
|
||||
_handleRequestRedirect(request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker, securityDetails) {
|
||||
const response = new Response(this._client, request, redirectStatus, redirectHeaders, fromDiskCache, fromServiceWorker, securityDetails);
|
||||
request._response = response;
|
||||
this._requestIdToRequest.delete(request._requestId);
|
||||
this._interceptionIdToRequest.delete(request._interceptionId);
|
||||
@@ -239,7 +240,7 @@ class NetworkManager extends EventEmitter {
|
||||
const request = this._requestIdToRequest.get(event.requestId);
|
||||
// If we connect late to the target, we could have missed the requestWillBeSent event.
|
||||
if (request)
|
||||
this._handleRequestRedirect(request, event.redirectResponse.status, event.redirectResponse.headers, event.redirectResponse.fromDiskCache, event.redirectResponse.fromServiceWorker);
|
||||
this._handleRequestRedirect(request, event.redirectResponse.status, event.redirectResponse.headers, event.redirectResponse.fromDiskCache, event.redirectResponse.fromServiceWorker, event.redirectResponse.securityDetails);
|
||||
}
|
||||
this._handleRequestStart(event.requestId, null, event.request.url, event.type, event.request, event.frameId);
|
||||
}
|
||||
@@ -501,8 +502,9 @@ class Response {
|
||||
* @param {!Object} securityDetails
|
||||
* @param {boolean} fromDiskCache
|
||||
* @param {boolean} fromServiceWorker
|
||||
* @param {?Object} securityDetails
|
||||
*/
|
||||
constructor(client, request, status, headers, fromDiskCache, fromServiceWorker, securityDetails = null) {
|
||||
constructor(client, request, status, headers, fromDiskCache, fromServiceWorker, securityDetails) {
|
||||
this._client = client;
|
||||
this._request = request;
|
||||
this._contentPromise = null;
|
||||
@@ -514,7 +516,7 @@ class Response {
|
||||
this._headers = {};
|
||||
for (const key of Object.keys(headers))
|
||||
this._headers[key.toLowerCase()] = headers[key];
|
||||
this._securityDetails = {};
|
||||
this._securityDetails = null;
|
||||
if (securityDetails) {
|
||||
this._securityDetails = new SecurityDetails(
|
||||
securityDetails['subjectName'],
|
||||
@@ -554,7 +556,7 @@ class Response {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {!SecurityDetails|Object}
|
||||
* @return {?SecurityDetails}
|
||||
*/
|
||||
securityDetails() {
|
||||
return this._securityDetails;
|
||||
|
||||
Reference in New Issue
Block a user