gpt4 book ai didi

asp.net-core - 从 Blazor 发出 CORS 请求时如何包含凭据?

转载 作者:行者123 更新时间:2023-12-03 08:53:39 26 4
gpt4 key购买 nike

在 blazor 客户端应用程序上,相当于 jQuery ajax WithCredentials 或 JavaScript credentials: 'include' 的等效项是什么?

使用 Javascript 我可以说:

fetch('https://www.example.com/api/test', {
credentials: 'include'
});

其中在发出请求时包含身份验证 cookie,服务器响应 200。我正在尝试使用 HttpClient 与 Blazor 编写相同的内容。

最佳答案

您不能再在 Startup 文件中设置 WebAssemblyHttpMessageHandler.DefaultCredentials = FetchCredentialsOption.Include; 来实现 js 的 credentials: 'include'

要在较新版本的 blazor 中实现此目的,您需要创建一个从 DelegatingHandler 派生的类,重写 SendAsync 方法并设置 BrowserRequestCredentials对于请求BrowserRequestCredentials.Include

public class CookieHandler : DelegatingHandler
{
public CookieHandler()
{
InnerHandler = new HttpClientHandler();
}

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.SetBrowserRequestCredentials(BrowserRequestCredentials.Include);

return base.SendAsync(request, cancellationToken);
}
}

将您的 CookieHandler 传递给 HttpClient

builder.Services.AddScoped(sp => new HttpClient(new CookieHandler()) { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

关于asp.net-core - 从 Blazor 发出 CORS 请求时如何包含凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303120/

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