gpt4 book ai didi

angularjs - 需要将 Windows 凭据跨域传递给 API

转载 作者:可可西里 更新时间:2023-11-01 15:10:02 25 4
gpt4 key购买 nike

我已经在 AngularJS 中实现了基于 token 的身份验证,但是我的安全 API(生成 token )是基于窗口的,以便将所有 AD 交互集中到一个站点。

结构如下: enter image description here

流程如下:

  1. 用户未登录
  2. 向 windows 认证的安全 API 发出 $http 请求
  3. Security Api 用户 AD 创建 token (由 windows auth 处理的身份验证)
  4. token 返回给应用
  5. 所有后续请求都使用 token 来标记经过身份验证的 api

当安全性和应用程序位于同一个域时,这一切都工作正常,但是只要 $http 请求需要跨域,就不会发送带有 Windows 凭据的授权 header ,从而导致 401。

Example Request (api is windows authenticated)

enter image description here

Security Api 通过允许 Origin 的(* 仅用于测试而非生产)来允许跨域请求:

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />

问题(长话短说:DR):

是否可能?如果可能,如何让 AngularJS 客户端应用程序在发出跨域 $http 请求时传递 Windows 凭据?

最佳答案

尝试在发出 AJAX 请求时将 withCredentials 属性设置为 true 以确保客户端将发送其凭据:

$http.get(url, { withCredentials: true, ...})

基本上这个标志的作用是在底层 XMLHttpRequest 上设置 withCredentials 属性。 native 对象。

您可能还需要将服务器上的 Authorization header 包含到 Access-Control-Allow-Headers 响应中。

关于angularjs - 需要将 Windows 凭据跨域传递给 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22148984/

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