Angular 11 请求的资源上没有 'Access-Control-Allow-Origin' header?
Angular 11 No 'Access-Control-Allow-Origin' header is present on the requested resource?
我有 dotnet core 5
应用程序和 Angular app
在 local host
中所有 Http methods
工作正常但在网络主机上 HttpGet, HttpPost Methods
工作正常并且 HttpPut, DELETE
抛出异常:
Access to XMLHttpRequest at '---' from origin '---' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
配置 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
这适用于我的项目:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
您的代码中可能发生了异常,服务器向您发送了这个误导性响应,您可以通过转到托管应用程序并转到 web.config
文件并通过设置启用日志来检测异常 true
并发起另一个请求并转到已生成的日志文件并调试问题。
5 天后我找到了我的问题原因,它需要删除 Web.config
文件中的 Web
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
以及托管服务提供商公司支持者在托管服务器中应用的一些更改
我有 dotnet core 5
应用程序和 Angular app
在 local host
中所有 Http methods
工作正常但在网络主机上 HttpGet, HttpPost Methods
工作正常并且 HttpPut, DELETE
抛出异常:
Access to XMLHttpRequest at '---' from origin '---' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
配置 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
这适用于我的项目:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
您的代码中可能发生了异常,服务器向您发送了这个误导性响应,您可以通过转到托管应用程序并转到 web.config
文件并通过设置启用日志来检测异常 true
并发起另一个请求并转到已生成的日志文件并调试问题。
5 天后我找到了我的问题原因,它需要删除 Web.config
文件中的 Web
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
以及托管服务提供商公司支持者在托管服务器中应用的一些更改