V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mskf
V2EX  ›  问与答

求助~~~问一个 CORS 协议的问题

  •  
  •   mskf · 2018-01-17 15:49:14 +08:00 · 1964 次点击
    这是一个创建于 2508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 HTTPS 请求,浏览器中会对不属于 Allow-Origin 的 CORS 请求进行拦截,但是使用诸如 POSTMAN 这样的工具去模仿浏览器的请求,是怎样进行请求和接受响应的

    6 条回复    2018-01-17 17:22:21 +08:00
    mskf
        1
    mskf  
    OP
       2018-01-17 16:03:56 +08:00
    PS:我是在 POSTMAN 里尝试请求 b 站的视频地址时发现这个问题的,预检请求返回值是正常的( 200 ),但是视频请求的返回结果是 error 473
    p2pCoder
        2
    p2pCoder  
       2018-01-17 16:23:31 +08:00
    如果要准确理解,建议你 抓包,然后对比一下,就可以知道了
    浏览器进行请求的时候 header 能设置的参数有限 origin refer 这些参数是没法设置的,而 postman 以及很多爬虫库,对于 http 请求的所有 header 参数都可以设置
    mskf
        3
    mskf  
    OP
       2018-01-17 16:35:58 +08:00
    @p2pCoder 那么直接通过浏览器导入的请求,和浏览器中的返回结果不一样的原因可能是什么(假如不包含 cookies 和时间片等验证)
    p2pCoder
        4
    p2pCoder  
       2018-01-17 16:43:35 +08:00
    @mskf 按理说是完全一样的,但是很多请求都有 前置的一些验证之类的,有些是 js 动态生成,有些是请求后端生成
    有些参数,只能用一次,一次之后就失效了,最好,看下请求的每个参数的产生过程
    gongpeione
        5
    gongpeione  
       2018-01-17 16:47:36 +08:00
    1. 不只是 HTTPS 才有跨域拦截问题。
    2. 跨域请求被拦截的原因是浏览器遵从同源策略( Same-origin policy ),所以大多数的跨域请求其实都是成功的,只是内容被浏览器拦了下来,诸如 Postman 这样的客户端软件或是爬虫是不需要遵从这个的。
    3. 这些工具做的是根据你的配置项添加 header、body 等,生成对应的请求。
    4. 473 错误和应该和跨域无关。
    mskf
        6
    mskf  
    OP
       2018-01-17 17:22:21 +08:00
    @gongpeione
    @p2pCoder

    ok,我看了下请求参数,确实有可能存在时间片的加盐 hash,不过很奇怪的是,在当前页面中直接插入 GET 请求地址对应的 A 标签,就可以获取正确的相应结果了,待会抓包试试看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:12 · PVG 08:12 · LAX 16:12 · JFK 19:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.