[英]ASP.NET Core CORS WebAPI: no Access-Control-Allow-Origin header
[英]ASP.NET Core CORS WebAPI: persist no Access-Control-Allow-Origin header
我在我的 web.api 的生产服务器上部署了应用程序,我在浏览器控制台中收到以下错误(似乎已解决):
访问 XMLHttpRequest 在
' https://ebbtelemetrywebapi.azurewebsites.net/api//events ' from origin ' https://ebbwatelem.azurewebsites.net ' 已被 CORS 策略阻止:没有 'Access-Control-Allow-Origin' 标头存在于请求的资源。
在此错误之前,我有以下内容(似乎已解决):
POST https://localhost:44340/api/events 500
被调用函数的标题如下:
public async Task<IEnumerable<CosmosDBEvents>> GetAsync([FromBody]EventsGetTwoParamsDto dto)
DTO 声明如下:
public class EventsGetTwoParamsDto
{
public string DeviceIdorId { get; set; }
public string Action2 { get; set; }
}
和 ajax 调用如下:
$.ajax({
type:"POST",
url: ENV.apiUrl+'/events',
data: JSON.stringify({DeviceIdorId: ENV.deviceId, Action2 : "Pagina5"}),
dataType: "json",
contentType: 'application/json;charset=UTF-8',
success: function(data){
console.log("RISPOSTA", data);
}
});
Startup.cs/ConfigurationServices 方法包含以下行:
services.AddCors(); // Make sure you call this previous to AddMvc
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
和 thr Startup.cs/Configure 方法包含:
app.UseCors(
options=> options.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
我究竟做错了什么?
提前致谢。 西蒙娜
所有问题都与第二个解决了更改控制器中方法的声明有关,如下所示:
[HttpPost]
public async
Task<IEnumerable<CosmosDBTelemetry>>GetAsync(TelemetriesTwoParamsDto dto)
谢谢大家,西蒙娜
你可能把代码放错了地方。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAnyOrigin",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
// other code
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowAnyOrigin");
// ...
}
您可以尝试将默认策略添加到ConfigureServices
方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
}
// (...)
}
请参阅 ASP.NET Core CORS 文档部分以获取参考。
您还可以尝试将"AllowedHosts": "*"
到appsettings.json
文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.