首页 > web前端 > js教程 > 为什么我的 CORS 策略会阻止来自'https://example.com/”的带有尾部斜杠的请求?

为什么我的 CORS 策略会阻止来自'https://example.com/”的带有尾部斜杠的请求?

Barbara Streisand
发布: 2024-11-03 15:46:03
原创
397 人浏览过

Why Does My CORS Policy Block Requests from 'https://example.com/' with a Trailing Slash?

来自源“https://example.com/”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:确实如此没有 HTTP 正常状态。

TL;DR


Web 来源包含路径。因此,https://googledocs-clone-sbayrak.netlify.app/不是有效的网络来源。删除尾随斜杠。

有关 CORS Web 起源的更多详细信息


Origin 标头的值中不允许有尾随斜杠


根据 CORS 协议(在 Fetch 标准中指定),浏览器永远不会将 Origin 请求标头设置为带有尾部斜杠的值。因此,如果 https://googledocs-clone-sbayrak.netlify.app/whatever 上的页面发出跨源请求,则该请求的 Origin 标头将包含
https://googledocs-clone-sbayrak.netlify.app
登录后复制

,不带任何尾部斜杠。

服务器端的逐字节比较


您正在使用 Socket.IO,它依赖于 Node.js cors 包。如果请求的来源与您的 CORS 配置的来源值 (https://googledocs-clone-sbayrak.netlify.app/) 不完全匹配,则该包不会在响应中设置任何 Access-Control-Allow-Origin。

放在一起


显然,

'https://googledocs-clone-sbayrak.netlify.app' ===
'https://googledocs-clone-sbayrak.netlify.app/'
登录后复制

评估为 false,这会导致 cors 包不设置任何 Access-Control-Allow-Origin响应中的标头,这会导致浏览器中的 CORS 检查失败,从而出现您观察到的 CORS 错误。

来自 Fetch Standard


的第 3.2.5 节的示例Fetch Standard 甚至提供了一个关于此错误的启发性示例:
Access-Control-Allow-Origin: https://rabbit.invalid/
登录后复制

并解释了为什么它会导致 CORS 检查失败:


A序列化源没有尾部斜杠。


以上是为什么我的 CORS 策略会阻止来自'https://example.com/”的带有尾部斜杠的请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板