我有 dotnet core 5
应用程序和 Angular app
,在 local host
中所有 Http methods
运行良好,但在网络主机 HttpGet, HttpPost Methods
上运行正常且 HttpPut, DELETE
抛出异常:
从源“---”对 XMLHttpRequest 的“---”的访问已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
配置 Cors
如下所示:
public static IServiceCollection AddAdminApiCors(this IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
{
builder.AllowAnyOrigin();
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
return services;
}
在Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAdminApiCors();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
[Authorize]
[EnableCors("CorsPolicy")]
public class CompanyController : ControllerBase
{
[HttpGet]
public async Task<ActionResult<IEnumerable<CompanyViewModel>>> Get([FromQuery] CompanyQuery companyQuery)
{
return Ok(await _mediator.Send(companyQuery));
}
[HttpPost]
public async Task<ActionResult<int>> Create([FromBody] CreateCompanyCommand command)
{
var productId = await _mediator.Send(command);
return Ok(productId);
}
[HttpPut]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesDefaultResponseType]
public async Task<IActionResult> Update([FromBody] UpdateCompanyCommand command)
{
await _mediator.Send(command);
return NoContent();
}
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesDefaultResponseType]
public async Task<IActionResult> Delete(int id)
{
await _mediator.Send(new DeleteCompanyCommand { Id = id });
return NoContent();
}
}
在许多帖子中都告诉我更改 web.config
文件并删除 WebDAV IIS Module
我关注了他们但我的问题没有解决
cors put error
答案 0 :(得分:1)
这适用于我的项目:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
答案 1 :(得分:0)
您的代码中可能发生异常,服务器向您发送此误导性响应,您可以通过转到托管应用程序并转到 web.config
文件并通过将其设置为 {{1} 来启用日志来检测异常并发起另一个请求并转到已生成的日志文件并调试问题。
答案 2 :(得分:0)
5 天后我找到了我的问题原因,它需要删除 Web.config
文件中的 Web
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
以及托管提供商公司支持者在托管服务器中应用的一些更改