当前位置:  开发笔记 > 前端 > 正文

JQuery Ajax基本身份验证标头无法正常工作

如何解决《JQueryAjax基本身份验证标头无法正常工作》经验,为你挑选了1个好方法。

我试图在JQuery中的服务器上发出一个简单的GET请求.

    $.ajax({
        headers: {
            "Authorization": "Basic " + btoa("hello" + ":" + "world")
        },
        url: "http://hello.world?Id=1",
        method: "GET",
        success: function () {
        },
    }).then(function () {
    });

问题是,当请求被发送时,身份验证标头不会正确地放入请求中:

Host: hello.world
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Origin: null
Connection: keep-alive
Cache-Control: max-age=0

apsillers.. 9

当向另一个源发送HTTP请求时,该请求可以是"简单"或"非简单".如果请求使用(或两者),则请求变得非简单

除HEAD,GET或POST之外的HTTP动词; 要么,

的请求报头以外Accept,Accept-Language,Content-Language,或Content-Type

由于您的请求设置了Authorization标头,因此它不简单.

当请求不简单时,浏览器首先使用OPTIONS方法发送预检请求.这是你在问题中看到的要求.(请参阅预检请求中的HTML5 Rocks和[我对Access-Control-Allow-Origin标头如何工作的答案?).预检不包括非简单标题,但在Access-Control-Request-Headers标题中列出它们.

如果服务器正确响应预检,浏览器会发出真正的请求.在这种情况下,浏览器正在寻找Access-Control-Allow-Headers: Authorization服务器的响应头,以指示非简单Authorization头可以在实际请求中发送.您的服务器必须在其响应中包含该标头.



1> apsillers..:

当向另一个源发送HTTP请求时,该请求可以是"简单"或"非简单".如果请求使用(或两者),则请求变得非简单

除HEAD,GET或POST之外的HTTP动词; 要么,

的请求报头以外Accept,Accept-Language,Content-Language,或Content-Type

由于您的请求设置了Authorization标头,因此它不简单.

当请求不简单时,浏览器首先使用OPTIONS方法发送预检请求.这是你在问题中看到的要求.(请参阅预检请求中的HTML5 Rocks和[我对Access-Control-Allow-Origin标头如何工作的答案?).预检不包括非简单标题,但在Access-Control-Request-Headers标题中列出它们.

如果服务器正确响应预检,浏览器会发出真正的请求.在这种情况下,浏览器正在寻找Access-Control-Allow-Headers: Authorization服务器的响应头,以指示非简单Authorization头可以在实际请求中发送.您的服务器必须在其响应中包含该标头.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有