来自源“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中文网其他相关文章!