未能添加 HTTP 标头
Posted
技术标签:
【中文标题】未能添加 HTTP 标头【英文标题】:Fail to add an HTTP header 【发布时间】:2017-04-26 16:27:51 【问题描述】:我正在尝试生成带有授权标头的 HTTP 请求:
$.ajax(
type: 'GET',
url: "https://subdomain.domain.com/login",
beforeSend: function (xhr)
xhr.setRequestHeader ("Authorization", "Basic " + btoa('username' + ":" + 'password'));
)
但此代码生成的请求不包含授权标头:
选项 /login HTTP/1.1
主机:subdomain.domain.com
连接:保持活动
编译指示:无缓存
缓存控制:无缓存
访问控制请求方法:GET
来源:http://localhost:3021
用户代理:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (Khtml, 像壁虎)Chrome/12.3.4567.890 Safari/537.36
访问控制请求标头:授权
接受:/
推荐人:http://localhost:3021/app.html
接受编码:gzip、deflate、sdch、br
接受语言:en-US,en;q=0.8,he;q=0.6
我做错了什么?
【问题讨论】:
你试过在 AJAX 请求语法中使用headers
键吗???
@ShalinPatel 不,你是什么意思?可以举个例子吗?
点赞headers : "Authorization" : "Basic " + btoa('username' + ":" + 'password')
【参考方案1】:
这可能会解决您的问题。
$.ajax(
type: 'GET',
url: "https://subdomain.domain.com/login",
headers :
"Authorization" : "Basic " + btoa('username' + ":" + 'password')
)
【讨论】:
【参考方案2】:问题是我试图让跨域请求做一个不允许 CORS 的服务器。
因此,我看到的请求是使用 OPTIONS 方法的预检请求。如果在这个预检请求中我得到了正确的响应 CORS 标头,我会在真实请求中看到我的 Authorization 标头。但是由于我没有通过 preflight OPTIONS 请求,所以我没有真正的请求,因此我没有看到 Authorization 标头。
我通过使用 Node.js 而不是浏览器使用 API 解决了这个问题。
【讨论】:
以上是关于未能添加 HTTP 标头的主要内容,如果未能解决你的问题,请参考以下文章