mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
fix(Network): Do not attempt to normalize malformed URLs. (#875)
This patch avoids throwing 'url malformed' error during generating request hash for request interception. Fixes #869.
This commit is contained in:
parent
ec760ab5e3
commit
cfece3451d
@ -394,9 +394,16 @@ helper.tracePublicAPI(Response);
|
|||||||
* @return {string}
|
* @return {string}
|
||||||
*/
|
*/
|
||||||
function generateRequestHash(request) {
|
function generateRequestHash(request) {
|
||||||
const hash = {
|
let normalizedURL = request.url;
|
||||||
|
try {
|
||||||
// Decoding is necessary to normalize URLs. @see crbug.com/759388
|
// Decoding is necessary to normalize URLs. @see crbug.com/759388
|
||||||
url: decodeURI(request.url),
|
// The method will throw if the URL is malformed. In this case,
|
||||||
|
// consider URL to be normalized as-is.
|
||||||
|
normalizedURL = decodeURI(request.url);
|
||||||
|
} catch (e) {
|
||||||
|
}
|
||||||
|
const hash = {
|
||||||
|
url: normalizedURL,
|
||||||
method: request.method,
|
method: request.method,
|
||||||
postData: request.postData,
|
postData: request.postData,
|
||||||
headers: {},
|
headers: {},
|
||||||
|
@ -979,6 +979,13 @@ describe('Page', function() {
|
|||||||
const response = await page.goto(PREFIX + '/some nonexisting page');
|
const response = await page.goto(PREFIX + '/some nonexisting page');
|
||||||
expect(response.status).toBe(404);
|
expect(response.status).toBe(404);
|
||||||
}));
|
}));
|
||||||
|
it('should work with badly encoded URLs', SX(async function() {
|
||||||
|
await page.setRequestInterceptionEnabled(true);
|
||||||
|
server.setRoute('/malformed?rnd=%911', (req, res) => res.end());
|
||||||
|
page.on('request', request => request.continue());
|
||||||
|
const response = await page.goto(PREFIX + '/malformed?rnd=%911');
|
||||||
|
expect(response.status).toBe(200);
|
||||||
|
}));
|
||||||
it('should work with encoded URLs - 2', SX(async function() {
|
it('should work with encoded URLs - 2', SX(async function() {
|
||||||
// The requestWillBeSent will report URL as-is, whereas interception will
|
// The requestWillBeSent will report URL as-is, whereas interception will
|
||||||
// report encoded URL for stylesheet. @see crbug.com/759388
|
// report encoded URL for stylesheet. @see crbug.com/759388
|
||||||
|
Loading…
Reference in New Issue
Block a user