使用邮差工具/cURL/在Chrome控制台中测试CORS
我正在用邮递员工具测试CORS,我经常使用邮差工具/cURL/在Chrome控制台中测试CORS,curl,cors,google-chrome-devtools,postman,Curl,Cors,Google Chrome Devtools,Postman,我正在用邮递员工具测试CORS,我经常 access-control-allow-origin → null 对于获取或选项请求 http://localhost:4000/api/accounts?Host=http://localhost:4200/&X-Origin=http://jquery.com 同样,使用Origin代替X-Origin也不会改变结果。 同时,如果我像这样使用cURL curl -H "Origin: http://jquery.com" --verb
access-control-allow-origin → null
对于获取
或选项
请求
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
并打印API返回的JSON对象
现在我的问题如下:
*
Postman时,它会返回
访问控制允许原点→ *代码>
`origin: ["https://www.getpostman.com/", "http://localhost:4200/", "http://jquery.com"]`
http://jquery.com/
而不是http://jquery.com
将不允许来源为来源的请求=http://jquery.com
从客户端发送的
Origin
头是发起请求的方案、域和端口(如果不是80)。尾部的/
在标头中无效。您也不能发送多个来源。从服务器发送的Access Control Allow Origin
可以是*
,允许所有来源,也可以从请求头发回相同的来源
例如,如果您向http://www.telerik.com/
在Chrome中,请求头包含来源:http://www.telerik.com
(浏览器会自动发送此消息),来自服务器的响应标头包含访问控制允许来源:http://www.telerik.com
至于最后一个问题,根据规范,用户代理负责实施CORS,因此我怀疑cURL没有验证请求和响应是否匹配
用户代理验证
请求源于匹配
来源:您可以试试
curl -X OPTIONS 'https://domain/path/file.png' -H "Origin: https://yoursitedomain" -H "Access-Control-Request-Method: GET" -v -o /dev/null
curl -X OPTIONS 'https://domain/path/file.png' -H "Origin: https://yoursitedomain" -H "Access-Control-Request-Method: GET" -v -o /dev/null