使用 POSTMAN 时不会出现 CORS 问题

Posted

技术标签:

【中文标题】使用 POSTMAN 时不会出现 CORS 问题【英文标题】:CORS issue doesn't occur when using POSTMAN 【发布时间】:2016-08-01 22:17:54 【问题描述】:

一段时间以来,我一直在使用 POSTMAN 为 RESTful Web 服务发送 HTTP requests like GET, POST, PUT。最近遇到一个情况,通过浏览器向我的 REST API 发送请求时,我收到一条消息,

请求的资源上不存在访问控制允许源头。

解决方案当然是在 API 中添加这样的标头。 然而奇怪的是,当我通过 POSTMAN 发送相同的请求时,我能够得到响应。

所以我想知道通过 POSTMAN 发送请求与通过浏览器发送请求有何不同。

我解决了这个问题:CORS with POSTMAN,但它确实没有提供详细的答案。

【问题讨论】:

【参考方案1】:

来自 Chrome 开发扩展文档中的 Cross-Origin XMLHttpRequest:

常规网页可以使用XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到same origin policy 的限制。扩展并没有那么有限。只要首先请求跨域权限,扩展程序就可以与其源之外的远程服务器通信。

基本上浏览器扩展比网页内容拥有更多的权限。对于 Chrome 扩展程序,可以选择启用跨域访问。

【讨论】:

因此,此扩展行为假设跨站点请求已从服务器端启用。如果服务器本身阻止跨站请求会怎样? @Vrishank 你必须弄清楚有问题的服务器是如何决定阻止请求的。也许你需要添加一个referer header。

以上是关于使用 POSTMAN 时不会出现 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章

CORS - 从 Postman 伪造 CORS 预检无法返回标头

使用 Postman 时 django-cors-header 无法按预期工作

cors跨域问题

带有 Angular 和 Express 的 CORS - 在 Postman 中工作,但不在浏览器中

为啥后端服务器不会出现CORS问题?

使用 POST API 时出现多个 CORS 错误