我知道postman可以绕过cors请求,因为本质上cors是浏览器遵循的策略。但是为什么当我用桌面端的postman的时候,即使故意设置了origin和服务器不同源,还是能请求成功,而用浏览器的postman去请求服务器的接口,就会被Spring Boot默认的cors配置给拦截下来。
桌面端请求成功:
浏览器代理请求失败:
我知道postman可以绕过cors请求,因为本质上cors是浏览器遵循的策略。但是为什么当我用桌面端的postman的时候,即使故意设置了origin和服务器不同源,还是能请求成功,而用浏览器的postman去请求服务器的接口,就会被Spring Boot默认的cors配置给拦截下来。
桌面端请求成功:
浏览器代理请求失败:
CORS
是HTTP协议的一部分,但是具体执行(同源策略)限制/校验的是浏览器
,跟Spring Boot
没有任何关系。
简单讲,就是浏览器在发送跨域POST
之类请求时,先发送一个OPTION
请求。查询服务端的规则,即Access-Control-Allow-***
这些,然后根据这些协议(规则),来判断后续的动作,发送请求或者抛出异常。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
5 回答796 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
1 回答951 阅读✓ 已解决
5 回答1.8k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
为什么postman能访问接口,而浏览器就不行呢?这里需要理解什么是跨域,跨域是指的当前资源访问其他资源时发起的http请求由于安全原因(由于同源策略,域名、协议。端口中只要有一个不同就不同源),浏览器限制了这些请求的正常访问,特别需要注意的是这些发生在浏览器中。而通过postman等工具调用接口时,只是简单的访问一个资源,并不存在资源的相互访问。
https://blog.csdn.net/u012811805/article/details/84900395