gpt4 book ai didi

authentication - 使用 XHR 的基本身份验证

转载 作者:行者123 更新时间:2023-12-04 05:29:06 26 4
gpt4 key购买 nike

我正在尝试从需要基本身份验证的服务器获得一些响应。所以当我使用 curl 时:

curl -u user:pass http://myserver.com/get/send-my-data

它给了我正确的回应。
但是当我使用 jquery AJAX 创建 XHR 请求时。我有 403 错误。
这是我的 AJAX 设置:
            $.ajax ({
type: 'GET',
url: 'http://myserver.com/get/send-my-data',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic" + encode64(user:pass)); // I have calculated base64 encoded value of user:pass correctly.
},
success: function(d) { console.log(d); },
crossDomain: 'true'
});

我有 403 响应。这是使用 -v 选项从 curl 获取的请求 header 。
> POST /get/send-my-data HTTP/1.1
**> Authorization: Basic ********** // Removed original code deliberately**
> User-Agent: curl/7.27.0
> Host: localhost:8080
> Accept: */*
> Content-Length: 264
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------3c0e06f1e2b4

这是从我的 XHR 请求的查尔斯获得的 header
OPTIONS /get/send-my-data HTTP/1.1
Host 10.40.55.110:4502
Access-Control-Request-Method GET
Origin http://localhost:8080
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
**Access-Control-Request-Headers origin, authorization, accept**
Accept */*
Referer http://localhost:8080/proof/check.html
Accept-Encoding gzip,deflate,sdch
Accept-Language en-US,en;q=0.8
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3

我不明白为什么会这样?为什么我的 XHR 请求 header 没有像 curl header 中显示的那样显示授权 header 。请建议我哪里做错了。

PS:是跨域请求。

最佳答案

我面临这个问题是因为我正在发送一个跨域请求并且请求使用了 POST 方法。所以当我们在跨域服务器上进行POST时,就有了的概念。预检 这是图片。

在 Preflight 中,它只发送选项 header 并告诉资源将要命中哪个请求。然后服务器决定发送请求是否安全。

然后如果服务器发送 OK,则发送实际请求。
可能这些行会更具解释性。

Preflighted requests first send an HTTP request by the OPTIONS method to the resource on the other domain, in order to determine whether the actual request is safe to send. Cross-site requests are preflighted like this since they may have implications to user data. In particular, a request is preflighted if:

It uses methods other than GET, HEAD or POST. Also, if POST is used to send request data with a Content-Type other than application/x-www-form-urlencoded, multipart/form-data, or text/plain, e.g. if the POST request sends an XML payload to the server using application/xml or text/xml, then the request is preflighted.

It sets custom headers in the request (e.g. the request uses a header such as X-PINGOTHER)



Source: MDN CORS Documentation

关于authentication - 使用 XHR 的基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com