【发布时间】:2016-11-01 09:19:12
【问题描述】:
我正在使用 Postman 工具测试 CORS,并且不断得到
access-control-allow-origin → null
对于GET 或OPTIONS 的请求
http://localhost:4000/api/accounts?Host=http://localhost:4200/&X-Origin=http://jquery.com
同样使用Origin 代替X-Origin 不会改变结果。
同时,如果我像这样使用 cURL
curl -H "Origin: http://jquery.com" --verbose http://localhost:4000/api/accounts
我确实获得了对 API 的访问权限
< access-control-allow-origin: http://jquery.com
我还使用http 和 chrome Javascript 控制台打开了 jQuery 网站以执行此代码:
$.get("http://localhost:4000/api/accounts").then(function(val){console.log(val);})
它打印了 API 返回的 JSON 对象。
现在我的问题如下:
-
如何使用 Postman 正确测试 CORS?我注意到,当将服务器上的允许来源选项设置为
*时,邮递员确实返回access-control-allow-origin → *
只有当我明确允许一组来源时才会出现上述问题:
`origin: ["https://www.getpostman.com/", "http://localhost:4200/", "http://jquery.com"]`
- 我注意到允许
http://jquery.com/而不是http://jquery.com将不允许来自Origin=http://jquery.com的请求? - 我注意到,即使请求来自非授权来源,cURL 也会返回资源的内容(在本例中为 JSON 数据)。这是正常的还是意味着我忘记在服务器上配置一些暴露这些数据的东西?
【问题讨论】:
标签: curl cors google-chrome-devtools postman