gpt4 book ai didi

asp.net-core - Asp.NET 核心 : cross-origin request to services (preflight) returns code 204 instead of 200

转载 作者:行者123 更新时间:2023-12-03 15:17:49 25 4
gpt4 key购买 nike

我有 Asp.NET Core Web API 应用程序并尝试实现授权,但遇到了 CORS 问题 - 我的开发服务和 ui 主机在本地主机的不同端口上。

在登录页面上,我获得 token 并重定向到下一页。此时开始向服务发出数据请求。但是服务器响应状态为 204:没有预检请求的内容...
虽然,预检响应返回 Access-Control-Allow-Origin: * ...

Startup.cs 看起来像:

public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddCors(options =>
{
options.AddPolicy("Policy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader() );
});
services.AddAuthorization();
services.AddMvc() // ...


public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors("Policy");
app.UseMvc();
}

我错过了服务器端的东西吗? (在客户端 angular 的拦截器只是添加了带有 token 的 Authorization header )

附言我在 OSX 上使用 VS Code 进行开发(虽然我猜这并不重要)

更新:

正如@tpeczek 所建议的,我已将 cors 配置更改为:
        options.AddPolicy("Policy",
builder => builder.WithOrigins("http://localhost:80", "http://localhost")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials() );

但无法摆脱错误

Preflight looks like this

更新 2:

我得到的错误是
XMLHttpRequest cannot load localhost:5000/api/<method-name>;. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'localhost'; is therefore not allowed access. The response had HTTP status code 500.

但是一旦我删除 [Authorize]来自 Controller 的属性它工作正常。所以问题在于 token 检查?

更新 3:
问题在于意外删除的功能:-( 现在可以使用

最佳答案

204 NO CONTENT状态代码对于 CORS 预检响应完全有效(参见 here)。

您的问题是由于您的请求包含 Authorization header 使其成为“凭据请求”。在这种情况下,您不能对 Access-Control-Allow-Origin 使用通配符并且您必须指定 Access-Control-Allow-Credentials (你可以阅读更多 here)

services.AddCors(options =>
{
options.AddPolicy("Policy", builder => builder
.WithOrigins("<Origin One>", "<Origin Two>", ...)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
);
});

关于asp.net-core - Asp.NET 核心 : cross-origin request to services (preflight) returns code 204 instead of 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859101/

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