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

Flutter Web中使用Chopper发起GET请求无法修改请求头Referer

问题

Flutter Web环境下使用chopper网络库发起带自定义Referer的GET请求时,已完成自定义请求头配置,其余自定义请求头均可正常生效,仅Referer字段始终使用默认值,自定义配置不生效。

相关请求配置截图:
配置携带自定义Referer的自定义请求头

实际请求头效果截图:
请求中Referer未发生修改

根本原因

该问题和chopper库本身的实现没有关系,本质是浏览器层面的安全策略限制导致:

  • Referer属于Fetch规范定义的禁止修改的请求头,所有运行在浏览器环境的Web应用(包括Flutter Web编译生成的JS应用),都无法通过前端代码(无论使用原生fetch、XMLHttpRequest,还是基于二者封装的chopper、dio等网络库)手动覆盖该字段值。发起请求时浏览器会自动强制填充当前页面的源信息作为Referer,前端设置的自定义Referer会被浏览器直接忽略。
  • 其余自定义请求头不在浏览器禁止修改的头列表范围内,因此可以正常生效。
可行解决方式
  • 若需要设置完全自定义的Referer值,前端无法直接实现,需要搭建中间代理服务:前端将请求目标地址、需要携带的自定义Referer值发送给自有代理服务,由服务端发起真实请求、设置指定Referer,再将响应结果返回给前端。
  • 若仅需要调整Referer的发送策略(比如不发送Referer、仅发送站点源地址不携带完整路径),可以在页面的index.html中添加meta标签配置referrer规则,示例代码:
<!-- 所有请求均不发送Referer -->
<meta name="referrer" content="no-referrer">
<!-- 所有请求仅发送当前站点源作为Referer,不携带页面完整路径 -->
<meta name="referrer" content="origin">

注意:该方式仅能在浏览器预设的规则范围内调整Referer发送逻辑,无法设置任意自定义的Referer值。

内容的提问来源于stack exchange,提问作者Chris Maverick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.21 16:18:27