0

我正在将 oracle apex 用于学校项目,并使用 Angular 作为前端。

每当我通过传递 oauth client_id 和 client_secret 请求身份验证令牌时,都会在 Angular 中收到错误消息。

然而,当这是在 Postman 中完成时。这完美地工作,如下所示: 邮递员请求和响应显示 Authorization: Basic base64(client_id:client_recret) 和 content type: application/x-www.form-unlencoded 给出一个带有 token、expires_in 和 token_type 的响应

黄线是 base64 编码的 'client_id':client_secret' 组合。 将上一个请求的邮递员正文显示为“grant_type:client_credentaials”

但是,当通过angular发送相同的HTTP请求时,如图所示:

getToken() {
    const headers = new HttpHeaders(      
      {
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": "Basic " + btoa("pTgmbDsLzXokh5-K__t5sw.." + ':' + "ww2DnvIVV9siqdcE92oo9g.."),
    });

    let options = { headers: headers };
    return this.http.post(this.urlLogin, "grant_type=client_credentials", options);
}

控制台收到以下错误: CORS 策略错误后跟dailed to load 错误

在网络选项卡中,我收到 2 个针对同一个发布请求的失败条目: chrome 的网络窗格中有 2 个条目,均为红色。 一个失败的网络错误,另一个有 401 错误

在第一个中,以下内容显示在 HTTP 标头中 来自 chrome 的 HTTP 请求详细信息

在第二个(带有 401 响应)中,可以看到以下内容 带有 (401) 错误代码的 HTTP 错误 以上HTTP错误继续

如上图所示,我只发送了一个 HTTP POST 请求。为什么 HTTP 请求被发送两次?

这里似乎有什么问题?

oauth API 是否受跨源保护?

4

1 回答 1

0

HTTP 请求被发送两次的原因是一个用于发送请求,另一个用于响应。由于您在 localhost 中运行 Angular 应用程序,但从非本地(apex ..)使用 API 服务会导致 CORS 问题。避免

        1)run service locally 
        2)disable CORS 
于 2020-06-08T05:35:51.120 回答