You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PuppeteerSharp调用page.GoToAsync时触发Protocol error (Page.navigate): Invalid referrerPolicy错误求助

PuppeteerSharp调用page.GoToAsync时触发Protocol error (Page.navigate): Invalid referrerPolicy错误求助

兄弟,我之前踩过这个坑,给你几个实用的排查和解决方向,你可以一步步试:

  • 先查显式传递的referrerPolicy参数:你有没有在调用GoToAsync时,通过NavigationOptions指定过ReferrerPolicy?比如写过类似下面的代码:

    await page.GoToAsync(fromURL.ToString(), new NavigationOptions { ReferrerPolicy = "xxx" });
    

    如果有的话,一定要确认这个值是Chrome认可的合法选项——比如no-referrer、no-referrer-when-downgrade、origin、strict-origin-when-cross-origin这些,拼写半点儿都不能错,多打个空格或者拼错字母都会触发这个错误。

  • 要是你没显式指定过,那大概率是隐式传递的参数出问题了:比如当前页面的document.referrer被改成了不合法的值,或者你用的PuppeteerSharp版本和Chrome/Chromium版本不兼容。老版本的PuppeteerSharp有时候对新的referrerPolicy值支持有bug,或者Chrome版本太新,PuppeteerSharp还没跟上CDP协议的变化。

  • 别被目标页面的referrer policy带偏:你说目标页面的Referrer Policy是strict-origin-when-cross-origin,但这个是目标页面自己设置的响应头,和你发起导航请求时传的referrerPolicy参数完全是两码事!错误是Chrome在处理导航请求时,收到了不合法的referrerPolicy参数,问题出在请求发起方(你的代码或者PuppeteerSharp的内部处理),和目标页面的设置没关系。

  • 给你个临时解决的招:调用GoToAsync时直接强制指定一个合法的referrerPolicy,比如就用你看到的那个strict-origin-when-cross-origin,代码这么写:

    await page.GoToAsync(fromURL.ToString(), new NavigationOptions 
    { 
        ReferrerPolicy = "strict-origin-when-cross-origin" 
    });
    

    这样能绕过自动生成参数时可能出现的错误。

  • 最后别忘了更个新:把PuppeteerSharp升级到最新稳定版,很多这类参数解析的小bug在新版本里都被修复了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:48:02