use*_*827 7 curl cors google-chrome-devtools postman
我正在使用Postman工具测试CORS并且我经常得到
access-control-allow-origin ? null
Run Code Online (Sandbox Code Playgroud)
对于GET或OPTIONS要求
http://localhost:4000/api/accounts?Host=http://localhost:4200/&X-Origin=http://jquery.com
Run Code Online (Sandbox Code Playgroud)
也使用Origin而X-Origin不是改变结果.同时,如果我像这样使用cURL
curl -H "Origin: http://jquery.com" --verbose http://localhost:4000/api/accounts
Run Code Online (Sandbox Code Playgroud)
我确实可以访问API
< access-control-allow-origin: http://jquery.com
Run Code Online (Sandbox Code Playgroud)
我还使用httpchrome javascript控制台打开jQuery网站以执行此代码:
$.get("http://localhost:4000/api/accounts").then(function(val){console.log(val);})
Run Code Online (Sandbox Code Playgroud)
它打印了API返回的JSON对象.
现在我的问题如下:
如何使用Postman正确测试CORS?我注意到,当设置服务器上的allow origin选项时,*Postman确实会返回
access-control-allow-origin ? *
只有当我明确允许一组来源时才会出现上述问题:
`origin: ["https://www.getpostman.com/", "http://localhost:4200/", "http://jquery.com"]`
Run Code Online (Sandbox Code Playgroud)
http://jquery.com/而http://jquery.com不允许来源的请求Origin=http://jquery.com?小智 14
你可以试试
curl -X OPTIONS 'https://domain/path/file.png' -H "Origin: https://yoursitedomain" -H "Access-Control-Request-Method: GET" -v -o /dev/null
Run Code Online (Sandbox Code Playgroud)
Origin从客户端发送的标头是请求源自的方案,域和端口(如果不是80).尾部/在标题中无效.您也不能发送多个来源.在Access-Control-Allow-Origin从服务器发送可以是*,允许所有的起源,或者你从请求头传回相同的起源.
例如,如果您http://www.telerik.com/在Chrome中发出请求,则请求标头包含Origin:http://www.telerik.com(浏览器自动发送此请求),并且服务器的响应标头包含Access-Control-Allow-Origin:http://www.telerik.com.
至于你的上一个问题,根据规范,用户代理负责执行CORS,所以我怀疑cURL不会验证请求和响应是否匹配.
用户代理验证请求源自的位置的值和来源是否匹配.
资料来源: https ://www.w3.org/TR/cors/
| 归档时间: |
|
| 查看次数: |
42843 次 |
| 最近记录: |