为什么postman可以绕过cors请求,即使设置了origin不同源?

我知道postman可以绕过cors请求,因为本质上cors是浏览器遵循的策略。但是为什么当我用桌面端的postman的时候,即使故意设置了origin和服务器不同源,还是能请求成功,而用浏览器的postman去请求服务器的接口,就会被Spring Boot默认的cors配置给拦截下来。

桌面端请求成功:
image.png
浏览器代理请求失败:
image.png
image.png

阅读 3.6k
2 个回答

为什么postman能访问接口,而浏览器就不行呢?这里需要理解什么是跨域,跨域是指的当前资源访问其他资源时发起的http请求由于安全原因(由于同源策略,域名、协议。端口中只要有一个不同就不同源),浏览器限制了这些请求的正常访问,特别需要注意的是这些发生在浏览器中。而通过postman等工具调用接口时,只是简单的访问一个资源,并不存在资源的相互访问。

https://blog.csdn.net/u012811805/article/details/84900395

CORS是HTTP协议的一部分,但是具体执行(同源策略)限制/校验的是浏览器,跟Spring Boot没有任何关系。

简单讲,就是浏览器在发送跨域POST之类请求时,先发送一个OPTION请求。查询服务端的规则,即Access-Control-Allow-***这些,然后根据这些协议(规则),来判断后续的动作,发送请求或者抛出异常。


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏