小白想请教一个跨源 post 的问题

3 天前
 RabbitQ

已知服务端配置了 access-control-allow-origin 为 * ,不允许带凭证的跨源请求,但是从 a.com:123 网页点击按钮后,经过 options 预检还是成功向 a.com:456/api 发送了带凭证的 post ,我自己用 fetch 伪造的时候就被 cors 拦截,提示 access-control-allow-origin 不能配置为*。

最后手动禁用 Chrome 的安全检查后才可以,想请教下这是什么原因,是网页自身代码不需要 cors 检查吗?

593 次点击
所在节点    程序员
3 条回复
hhhfffhhh
3 天前
lyxxxh2
3 天前
如果请求需要身份验证(例如 Cookies ),则不能使用 *。在这种情况下,服务器必须返回特定的域名,而不是通配符。 -- 来自 gpt

猜测你 fetch 带了 cookie,我都没注意过这些问题。
别用*,恶心人的东西,增加心智负担。
请求头有来源地址,直接原样返回。
CLMan
3 天前
因为 fetch 和 超链接跳转 是两种不同的跨源网络访问,对浏览器而言,会采取不同的跨源安全访问限制策略。前者由脚本触发,后者由用户点击跳转,所以浏览器对于前者会更严。

更细节的需要爬文档: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 。以及多做测试,CORS 涉及到安全,不同品牌的浏览器在一些细节上存在差异,需要自己整理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1086533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX