V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RabbitQ
V2EX  ›  程序员

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

  •  
  •   RabbitQ · 3 天前 via iPhone · 590 次点击

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

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

    3 条回复    2024-11-04 19:51:38 +08:00
    lyxxxh2
        2
    lyxxxh2  
       3 天前
    如果请求需要身份验证(例如 Cookies ),则不能使用 *。在这种情况下,服务器必须返回特定的域名,而不是通配符。 -- 来自 gpt

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

    更细节的需要爬文档: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS 。以及多做测试,CORS 涉及到安全,不同品牌的浏览器在一些细节上存在差异,需要自己整理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 22:11 · PVG 06:11 · LAX 14:11 · JFK 17:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.