我尝试使用Authorization标头生成HTTP请求:
$.ajax({
type: 'GET',
url: "https://subdomain.domain.com/login",
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa('username' + ":" + 'password'));
}})
但此代码生成的请求不包含授权标头:
OPTIONS / login HTTP / 1.1
主持人:subdomain.domain.com
连接:保持活力
Pragma:no-cache
缓存控制:无缓存
访问控制请求方法:GET
User-Agent:Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML, 像Gecko)Chrome / 12.3.4567.890 Safari / 537.36
Access-Control-Request-Headers:授权
接受: /
参考者:http://localhost:3021/app.html
接受编码:gzip,deflate,sdch,br
接受语言:en-US,en; q = 0.8,he; q = 0.6
我做错了什么?
答案 0 :(得分:0)
这可以解决您的问题。
$.ajax({
type: 'GET',
url: "https://subdomain.domain.com/login",
headers : {
"Authorization" : "Basic " + btoa('username' + ":" + 'password')
}
})
答案 1 :(得分:0)
问题是我试图让跨域请求做一个不允许CORS的服务器。
因此,我看到的请求是使用OPTIONS方法的预检请求。如果在这个预检请求中我得到了正确的响应CORS标头,我会在真实请求中看到我的授权标头。但由于我没有通过预检OPTIONS请求,因此我没有真正的请求,因此我没有看到授权标题。
我通过使用Node.js而不是浏览器来使用API来解决它。