gpt4 book ai didi

javascript - 如何使用 $.Ajax 将 Windows 身份验证凭据传递给 Web API 服务

转载 作者:行者123 更新时间:2023-12-03 09:42:55 25 4
gpt4 key购买 nike

如果问题很愚蠢,我深表歉意,说实话,我自己觉得我错过了一些非常简单的东西......!

情况是这样的:
我们有一个使用 Windows 身份验证的网站 (A)
该应用程序调用托管在同一服务器上的另一个 Web api 站点 (B),该服务器也使用 Windows 身份验证。

使用以下代码,我可以调用 web apis 并模拟用户:

var wi = (System.Security.Principal.WindowsIdentity)System.Web.HttpContext.Current.User.Identity;
wi.Impersonate();
using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
//call the api ... successfully impersonated!
}

有了上面,我可以从站点 A(在服务器端代码中)调用站点 B 上的 web apis。

我的问题出在客户端(javascript)上,我需要将 ajax 方法调用到 GET/POST/... web api。
我知道我需要将 xhrFields 添加到 ajax 调用中:
$.ajax({
url: apiUrl,
type: 'GET',
xhrFields: {
withCredentials: true
},
success: function (res) {
},
error: function (res) {
}
});

但是,这会提示输入凭据,而用户已经提供了浏览网站 A 的凭据。
有什么方法可以以某种方式将 session 中的凭据(或 token )包含到 ajax 调用中?

提前致谢,

最佳答案

Web Api 站点 (B) 必须附加 header

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
第 1 行:
如果来自源服务器的请求(PHP: $_SERVER['HTTP_ORIGIN'] 或 Apache: {HTTP_ORIGIN}),它会响应
第 2 行:
如果 header 响应为真,它将发送凭据

关于javascript - 如何使用 $.Ajax 将 Windows 身份验证凭据传递给 Web API 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47543618/

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