JQuery Ajax 基本身份验证 Header 无法正常工作
JQuery Ajax Basic Authentication Header doesn't work correctly
我正在尝试在 JQuery 中的服务器上发出简单的 GET 请求。
$.ajax({
headers: {
"Authorization": "Basic " + btoa("hello" + ":" + "world")
},
url: "http://hello.world?Id=1",
method: "GET",
success: function () {
},
}).then(function () {
});
问题是发送请求时,身份验证 Header 未正确放入请求中:
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
向另一个来源发送 HTTP 请求时,请求可以是 "simple" 或 "non-simple"。如果请求使用其中一个(或两者)
,则请求变为 non-simple
- 除 HEAD、GET 或 POST 之外的 HTTP 动词;或者,
- 除
Accept
、Accept-Language
、Content-Language
或 Content-Type
之外的请求 header
由于您的请求设置了 Authorization
header,因此它是 non-simple。
当一个请求是non-simple时,浏览器首先使用OPTIONS方法发送一个preflight请求。这就是您在问题中看到的请求。 (参见 HTML5 Rocks on preflight requests and [my answer on How does Access-Control-Allow-Origin header work?)。预检不包括 non-simple header,但将它们列在 Access-Control-Request-Headers
header.
中
如果服务器正确响应预检,浏览器将然后发出真正的请求。在这种情况下,浏览器正在寻找来自服务器的响应 header Access-Control-Allow-Headers: Authorization
以指示 non-simple Authorization
header 可以在实际中发送要求。您的服务器必须在其响应中包含 header。
我正在尝试在 JQuery 中的服务器上发出简单的 GET 请求。
$.ajax({
headers: {
"Authorization": "Basic " + btoa("hello" + ":" + "world")
},
url: "http://hello.world?Id=1",
method: "GET",
success: function () {
},
}).then(function () {
});
问题是发送请求时,身份验证 Header 未正确放入请求中:
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
向另一个来源发送 HTTP 请求时,请求可以是 "simple" 或 "non-simple"。如果请求使用其中一个(或两者)
,则请求变为 non-simple- 除 HEAD、GET 或 POST 之外的 HTTP 动词;或者,
- 除
Accept
、Accept-Language
、Content-Language
或Content-Type
之外的请求 header
由于您的请求设置了 Authorization
header,因此它是 non-simple。
当一个请求是non-simple时,浏览器首先使用OPTIONS方法发送一个preflight请求。这就是您在问题中看到的请求。 (参见 HTML5 Rocks on preflight requests and [my answer on How does Access-Control-Allow-Origin header work?)。预检不包括 non-simple header,但将它们列在 Access-Control-Request-Headers
header.
如果服务器正确响应预检,浏览器将然后发出真正的请求。在这种情况下,浏览器正在寻找来自服务器的响应 header Access-Control-Allow-Headers: Authorization
以指示 non-simple Authorization
header 可以在实际中发送要求。您的服务器必须在其响应中包含 header。