mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
feat(page): Add 'referer' as a parameter to Page.goto() (#3128)
If referer is passed to the options object its value will be used as the referer instead of the value set by `Page.setExtraHTTPHeaders()`. This is the correct way to set referer header: otherwise, the `referer` header will override all the document subrequests. Fixes #3090.
This commit is contained in:
parent
17029281a9
commit
464f3b4ca2
@ -1318,6 +1318,7 @@ Navigate to the next page in history.
|
|||||||
- `domcontentloaded` - consider navigation to be finished when the `DOMContentLoaded` event is fired.
|
- `domcontentloaded` - consider navigation to be finished when the `DOMContentLoaded` event is fired.
|
||||||
- `networkidle0` - consider navigation to be finished when there are no more than 0 network connections for at least `500` ms.
|
- `networkidle0` - consider navigation to be finished when there are no more than 0 network connections for at least `500` ms.
|
||||||
- `networkidle2` - consider navigation to be finished when there are no more than 2 network connections for at least `500` ms.
|
- `networkidle2` - consider navigation to be finished when there are no more than 2 network connections for at least `500` ms.
|
||||||
|
- `referer` <[string]> Referer header value. If provided it will take prefrence over the referer header value set by [page.setExtraHTTPHeaders()](#pagesetextrahttpheadersheaders).
|
||||||
- returns: <[Promise]<?[Response]>> Promise which resolves to the main resource response. In case of multiple redirects, the navigation will resolve with the response of the last redirect.
|
- returns: <[Promise]<?[Response]>> Promise which resolves to the main resource response. In case of multiple redirects, the navigation will resolve with the response of the last redirect.
|
||||||
|
|
||||||
The `page.goto` will throw an error if:
|
The `page.goto` will throw an error if:
|
||||||
|
@ -577,7 +577,7 @@ class Page extends EventEmitter {
|
|||||||
* @return {!Promise<?Puppeteer.Response>}
|
* @return {!Promise<?Puppeteer.Response>}
|
||||||
*/
|
*/
|
||||||
async goto(url, options = {}) {
|
async goto(url, options = {}) {
|
||||||
const referrer = this._networkManager.extraHTTPHeaders()['referer'];
|
const referrer = typeof options.referer === 'string' ? options.referer : this._networkManager.extraHTTPHeaders()['referer'];
|
||||||
|
|
||||||
/** @type {Map<string, !Puppeteer.Request>} */
|
/** @type {Map<string, !Puppeteer.Request>} */
|
||||||
const requests = new Map();
|
const requests = new Map();
|
||||||
|
@ -754,6 +754,17 @@ module.exports.addTests = function({testRunner, expect, headless}) {
|
|||||||
}
|
}
|
||||||
expect(error.message).toContain(url);
|
expect(error.message).toContain(url);
|
||||||
});
|
});
|
||||||
|
it('should send referer', async({page, server}) => {
|
||||||
|
await page.setRequestInterception(true);
|
||||||
|
page.on('request', request => request.continue());
|
||||||
|
const [request] = await Promise.all([
|
||||||
|
server.waitForRequest('/grid.html'),
|
||||||
|
page.goto(server.PREFIX + '/grid.html', {
|
||||||
|
referer: 'http://google.com/',
|
||||||
|
}),
|
||||||
|
]);
|
||||||
|
expect(request.headers['referer']).toBe('http://google.com/');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Page.waitForNavigation', function() {
|
describe('Page.waitForNavigation', function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user