gpt4 book ai didi

c# - 不存在 'Access-Control-Allow-Origin' header - asp.net core web api targeting .net framework 4.5.1

转载 作者:行者123 更新时间:2023-11-30 15:57:51 25 4
gpt4 key购买 nike

我有一个服务器端 RESTful API,它是在针对 .NET Framework 4.5.1 的 c# 中创建的,而我拥有的 CORS 配置似乎无法正常工作...

public void ConfigureServices(IServiceCollection services) {

services.AddCors(options => {
options.AddPolicy("AllowAll",
builder => {
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});

// Add framework services.
services.AddMvc();
services.AddOptions();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory) {
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}

var options = new JwtBearerOptions {
Audience = "MyAudience"
Authority = "MyAuthority"
};

app.UseJwtBearerAuthentication(options);
app.UseCors("AllowAll");
app.UseMvc();
}

每次我在 Controller 中调用以下 API

[Authorize]
[HttpGet]
public Task<JsonResult> Get() {

ICollection<string> abc;
try {
abc = new List<string>(){"A", "B", "C"};
} catch (Exception) {
abc = null;
}
return Json(abc);
}

我收到以下错误...

“XMLHttpRequest 无法加载 x 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问来源“x”。响应有 HTTP 状态代码 502。”

来 self 的客户端的 http 请求中有一个“授权” header ,这就是触发预检响应的原因,它有一个有效的 token 等等......所以它与这部分无关。

事实上,如果我针对 .NET Core 1.0 创建完全相同的 RESTful API,它会按预期工作。这让我相信 CORS 和目标 .NET Framework 4.5.1 存在问题,或者现在我必须添加一些明确的逻辑,否则由 .NET Core 1.0 隐式处理。

我的理解是 CORS 中间件应该处理所有这些,有人知道这里可能有什么问题吗?

编辑:

我忘了说这在本地主机上运行良好,我只在部署后才看到这个问题。此外,我针对 .NET Framework 4.6.2 测试了此问题,但问题仍然存在。

最佳答案

这已经解决了。

https://github.com/aspnet/Tooling/blob/master/known-issues-vs2017.md#aspnet-core-known-issues

正在使用不同版本的 visual studio 2017,一些项目\依赖项以 .Net Core 1.0 为目标,而其他项目以 .Net Core 1.1 为目标,这导致需要不同的运行时。

一旦我们同步到最新版本的 VS2017 (15.2.26430.13),以 .Net Core 1.1 为目标并在服务器上安装新的运行时,问题就消失了。

上面的 CORS 错误实际上是我在调用堆栈中丢失的 502(错误请求)错误的副作用...

关于c# - 不存在 'Access-Control-Allow-Origin' header - asp.net core web api targeting .net framework 4.5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44446680/

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