我使用 Chrome 扩展 Postman 为带有适当 header 的 POST 和 GET 请求生成代码,但经过几个小时的处理后,我发现我需要帮助。它在 Postman 中运行得很好,但它提供的 Javascript 代码有些错误。
如果我在没有身份验证 header 的情况下发出请求,我会收到 GET 401 - 未经授权。
如果我使用身份验证 header 发出请求,我会收到 OPTIONS 401 - Unauthorized。
$.ajax(
{
"async": true,
"crossDomain": true,
"url": "http://mywebservice.com/example.php?key=myValue",
"method": "GET",
"headers":
{
"authorization": "Basic YWRtaW39NjU1YzVlMWM="
}
})
任何人都可以解释为什么当我使用正确的授权 header 时我会收到 401 选项吗?我也尝试过使用 btoa(username + ":" + password)
- 相同的结果。
最佳答案
浏览器正在阻止您发出跨域请求,以保护您免受安全漏洞的影响。
(这在 postman 中不会发生,因为 postman 是浏览器扩展,因此具有与标准网页不同的权限。)
<罢工>
有几种方法可以解决这个问题:
1. 如果两个域都在您的控制之下,则使用
Access-Control-Allow-Origin HTTP header
2.使用jsonp使
电话
罢工>
关于javascript - 带有授权 header 的 Ajax GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699433/