【问题标题】:Fail to add an HTTP header未能添加 HTTP 标头
【发布时间】: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') }

标签: javascript jquery ajax http http-headers


【解决方案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 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2012-08-14
      • 2017-10-15
      • 2012-01-04
      相关资源
      最近更新 更多