【问题标题】:calling OKTA url from Angular app gives 404 but works in browser从 Angular 应用程序调用 OKTA url 会给出 404 但在浏览器中有效
【发布时间】:2020-05-19 05:17:49
【问题描述】:

我遇到了一种情况,我必须在 Angular 应用中调用 OKTA url“{}/api/v1/sessions/me”。 我没有使用任何库,只是进行简单的 get 调用。 我正在使用这样的代码

const headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8');
this.http
  .get<SessionInfo[]>(`https://xxx.xxx.com/api/v1/sessions/me`, { headers })
  .subscribe((data: SessionInfo[]) => {
    alert(data);
  });

SessionInfo 看起来像这样

export class SessionInfo {
userId: string;
login: string;
  }

当我在浏览器中运行 url 时,我得到了正确的响应。

在此之前我遇到了 CORS 问题,但我在 okta 仪表板中修复了它,并在 CORS 列表中添加了 localhost:8080。之后我得到 404。

有什么想法吗?

更新 https://devforum.okta.com/t/get-current-session-api-not-returning-session/3758 这里的讨论让我相信它与 cookie 有关。我的目标是获取当前用户的 ID,但看起来我们无法从另一个 url 读取 cookie。

更新 2 我制作了一个简单的 html 页面并使用简单的 nodejs 服务器托管它,我确实得到了响应。从角度做同样的事情我得到 404

【问题讨论】:

    标签: angular okta okta-api


    【解决方案1】:

    我匹配了 index.html 的标题和 Angular 发送的标题。 index.html 正在发送 Angular 未发送的 cookie。所以通过设置 { withCredentials: true }) Angular 做同样的事情。

     .get<SessionInfo>(`https://tenet.oktapreview.com/api/v1/sessions/me`, { withCredentials: true })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多