本地主机已被 cors 策略请求标头字段内容类型阻止访问控制不允许

Posted

技术标签:

【中文标题】本地主机已被 cors 策略请求标头字段内容类型阻止访问控制不允许【英文标题】:local host has been blocked by cors policy request header field content type is not allowed by access control 【发布时间】:2021-11-19 11:53:47 【问题描述】:

在 asp.net core 5 中,我使用服务来获取数据并将数据发布到数据库。将列表对象发布到服务时出现此错误。 错误 1.CORS 策略已阻止从源“http://localhost:47717”访问“http://localhost:35020/api/ApiDisplay/InsertDetails”处的 XMLHttpRequest:请求标头字段内容类型不允许预检响应中的访问控制允许标头。 角.js:15697 错误 2. 可能未处理的拒绝:"data":null,"status":-1,"config":"method":"POST","transformRequest":[null],"transformResponse":[null], "jsonpCallbackParam":"callback","processData":false,"crossDomain":true,"contentType":"application/json","url":"http://localhost:35020/api/ApiDisplay/InsertDetails", "dataType":"json","data":"CustomerID":"114","CustomerName":"Sridhar","Address":"Nalgonda","StateId":"1","CityId":" ","LandMark":"CrossRoad","Mobile":"1541454145","headers":"Accept":"application/json, text/plain, /","Content-类型":"application/json;charset=utf-8","statusText":"","xhrStatus":"error"。

我很容易在服务中获得 id,但不是这个对象。在 console.log 我得到了数据。在警报中它显示对象:对象。

这是我的控制器

[HttpPost] [Route("api/[controller]/[action]")]

    public IActionResult InsertDetails([FromBody] CustomerDetail cd)
    
        var result = disrep.InsertDet(cd);

        if (result.Count() > 0)
            return Ok(result);
        else
            return NoContent();

        //cd = result;
        //return cd;
    

这是我在 .js 文件中的代码

    this.insertdetails = function (Customer) 

    alert('insertdetails');
    var request = $http(

        method: "POST",
        processData: false,
        crossDomain: true,
        contentType:"application/json",
        url: baseUrl + "/api/ApiDisplay/InsertDetails",           
        dataType: "json",
        data: Customer,


    );
    return request;

在startup.cs中

        services.AddCors(options =>

        

            options.AddPolicy(allowSpecificOrigins,

            builder =>

            

                builder.WithOrigins("https://localhost:47717")

                        .AllowAnyHeader()

                        .AllowAnyMethod();

            );

        );

【问题讨论】:

【参考方案1】:

试试这个:

将此代码放在ConfigureServices的顶部

  public void ConfigureServices(IServiceCollection services)
        
            services.AddCors(o => o.AddPolicy("AllowAnyOrigins", builder =>
            
                       builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            ));

           ........... 
            
        

app.UseCors 应该放在 app.UseRouting() 和 app.UseAuthorization() 之间

   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
   
            .....

            app.UseRouting();

            app.UseCors("AllowAnyOrigins");

            app.UseAuthentication();
           app.UseAuthorization();

            ....
      

如果它工作,然后尝试替换

 builder.AllowAnyOrigin() 

builder.WithOrigins("https://localhost:47717")

【讨论】:

您的更改没有进展。

以上是关于本地主机已被 cors 策略请求标头字段内容类型阻止访问控制不允许的主要内容,如果未能解决你的问题,请参考以下文章

来自来源的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头

Angular7:已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头

我的网页的一项功能已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头

React 组件已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头

请求被 CORS 策略阻止

反应对 XMLHttpRequest 的访问已被 CORS 策略阻止 请求的资源上不存在“Access-Control-Allow-Origin”标头