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 applocal 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>

以及托管服务提供商公司支持者在托管服务器中应用的一些更改