gpt4 book ai didi

angular - 预检响应在 Angular 上没有 HTTP ok 状态

转载 作者:太空狗 更新时间:2023-10-29 16:53:03 27 4
gpt4 key购买 nike

我的服务中定义了以下获取请求:

createAuthorizationHeader(user, pass) {
let headers: HttpHeaders = new HttpHeaders;
headers = headers.append('Accept', 'application/json, text/plain, */*');
headers = headers.append('Authorization', 'Basic ' + btoa(user + ':' + pass));
headers = headers.append('Content-Type', 'application/json; charset=utf-8');
console.log(headers);
return this.http.get(this._loginUrl, {
headers: headers
});
}

结果是:

OPTIONS https://localhost:8443/delivery/all 401 ()

Failed to load https://localhost:8443/delivery/all: Response for preflight does not have HTTP ok status.

HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}

我也用 Postman 发出了同样的 post 请求,但一切正常,所以本地服务器可以正常工作。

我不知道我的请求哪里做错了。

最佳答案

CORS 契约(Contract)要求飞行前的 OPTIONS 请求不需要身份验证。看起来您的后端需要对 OPTIONS 请求和 GET 进行身份验证。

当您使用 Postman 访问您的后端时,您只是发送一个 GET。浏览器将首先发送一个 OPTIONS 请求(没有您的身份验证 header ),并寻找具有与发出请求的页面来源相匹配的“Access-Control-Allow-Origin” header 的响应。

如果对 OPTIONS 请求的响应不是 2xx,或者 header 不存在,或者 header 值与请求页面的来源不匹配,您将收到您遇到的错误,并且 GET 请求不会制作。

TLDR;将您的后端更改为在处理登录 URL 时不需要对 OPTIONS 方法进行身份验证。

关于angular - 预检响应在 Angular 上没有 HTTP ok 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047548/

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