【问题标题】:Dotnet core CORS - PATCH method is not being included in Access-Control-Allow-MethodsDotnet 核心 CORS - PATCH 方法未包含在 Access-Control-Allow-Methods 中
【发布时间】:2020-01-18 06:04:28
【问题描述】:

我一直在尝试为 dotnet core webapi 中的补丁方法启用 cors。

我尝试了以下代码:

services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
        {              
            builder
                .AllowAnyOrigin()
                .AllowAnyHeader()
                .AllowAnyMethod();
        }));

也试过.WithMethods("PATCH","GET")

并将其作为app.UseCors("CorsPolicy") 添加到管道中app.UseMvc() 之前

我的选项调用请求标头:

Access-Control-Request-Headers: content-type Access-Control-Request-Method: PUT Origin: http://localhost:3000 Referer: http://localhost:3000/ Sec-Fetch-Mode: no-cors User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36

它返回 204-No-Content 并带有以下标题。

Access-Control-Allow-Headers: content-type Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS Access-Control-Allow-Origin: * Date: Tue, 17 Sep 2019 10:59:23 GMT Request-Context: appId=cid-v1:46d7928d-c15f-4a2f-bded-4035f2eaba1f Server: Kestrel

响应标头中 Access-Control-Allow-Methods 的值始终为“GET、PUT、POST、DELETE、HEAD、OPTIONS”。无论我尝试什么,都不会有补丁。

Same Code 可以在 Internet Explorer 上正常工作,并返回 Access-Control-Allow-Methods 以及我在 WithMethods("PATCH", "GET") 方法中提到的方法名称。

【问题讨论】:

  • 您还应该在 Configure 方法的 Startup.cs 上的 UseMVC 之前添加 app.UseCors("CorsPolicy");
  • @MasihAkbari 是的,我正在添加。

标签: .net-core cors


【解决方案1】:

尝试完全删除对 AllowAnyMethod() 的调用,并将其他 REST 动词添加到 WithMethods()

services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
    {              
        builder
            .AllowAnyOrigin()
            .AllowAnyHeader()
            .WithMethods("GET", "PUT", "PATCH", "POST", "DELETE", "OPTIONS");
    }));

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    相关资源
    最近更新 更多