商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 软件教程 > 火狐浏览器跨域请求被拦截怎么办

火狐浏览器跨域请求被拦截怎么办

  发布于2026-07-28 阅读(0)

扫一扫,手机访问

火狐浏览器报跨源请求被拦截,提示“同源策略禁止读取位于 http://127.0.0.1:8080/api/data 的远程资源”——这场景是不是很眼熟?你正用本地 HTML 文件或开发服务器(比如 Vite、Webpack Dev Server)发起请求,结果目标接口地址跟当前页面协议、域名或端口没完全对上。火狐对跨域响应头校验比 Chrome 更严格,还默认开启了 privacy.file_unique_origin 和更保守的 CORS 策略,所以报错来得更干脆。

临时绕过:装 CORS Everywhere 插件

方法一:安装并强制注入 Access-Control-Allow-Origin:*
1) 地址栏输入 about:addons → 点击右上角“寻找更多附加组件” → 搜索 CORS Everywhere → 点击第一个结果旁的“添加到 Firefox”;
2) 安装完成后,点插件右侧齿轮图标 → “选项” → 勾选 【Enabled at startup】 → 在 “Force value of 'access-control-allow-origin'” 输入框填入 * → 点 Sa ve;
3) 【必须关闭所有火狐窗口再重新启动浏览器】,否则插件不生效。

方法二:仅限调试本地 file:// 页面(比如双击打开的 index.html)
在地址栏输入 about:config → 接受风险继续 → 搜索 privacy.file_unique_origin → 双击将其值由 true 改为 false
⚠️ 注意:这个设置会让所有本地文件共享同一源,仅用于离线调试,日常浏览时千万别开着。

根本解决:后端 Spring Boot 配置 CORS

第一步:在 config 包下新建 CorsConfig.ja va 类;
第二步:添加 @Configuration 注解,并实现 WebMvcConfigurer 接口;
第三步:重写 addCorsMappings 方法,在 registry.addMapping("/**") 后链式调用 .allowedOrigins("http://localhost:5173") —— 这里不能写成 "*",否则后续若启用 credentials 会失效;
第四步:补全 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*")
第五步:重启后端服务,确保响应头中间出现 Access-Control-Allow-Origin: http://localhost:5173

快速验证是否真跨域

打开开发者工具 → 切换到 Network 标签页 → 点一个失败的请求 → 查看 Headers → 对比 Request URL 和 Response Headers 中的 Access-Control-Allow-Origin 字段:
如果该字段完全缺失,说明后端没返回 CORS 头;
如果存在但值是 http://localhost:3000,而你当前页面地址却是 http://127.0.0.1:3000,则因域名不等效仍会报错——【localhost 与 127.0.0.1 在 CORS 中被视为不同源】

补充:前端开发时避免触发预检请求

如果请求被浏览器自动发了 OPTIONS 预检,说明它属于“复杂请求”:比如设置了 Content-Type: application/json、带自定义 header 或用了 PUT/DELETE 方法。
临时方案:把请求改成简单请求,例如用 FormData 发送表单数据,Content-Type 自动设为 multipart/form-data
长期方案:后端必须正确响应 OPTIONS 请求,返回 Access-Control-Allow-MethodsAccess-Control-Allow-Headers 等头。

本文转载于:https://www.php.cn/faq/2895520.html?uid=969633 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注