.net-core - Dotnet 核心 CORS - PATCH 方法未包含在 Access-Control-Allow-Methods 中
问题描述
我一直在尝试为 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”。无论我尝试什么,都不会有补丁。
相同的代码适用于 Internet Explorer,并返回带有我在 WithMethods("PATCH", "GET") 方法中提到的方法名称的 Access-Control-Allow-Methods 。
解决方案
尝试AllowAnyMethod()
完全删除对的调用,并将其他 REST 动词添加到WithMethods()
:
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.WithMethods("GET", "PUT", "PATCH", "POST", "DELETE", "OPTIONS");
}));
推荐阅读
- ios - 主从视图:DetailViewController 仅在我推送另一个视图时取消初始化?
- c++ - 更改 c++ lambda 中捕获的变量的值
- angular - ngfor循环内的数据绑定时出现角度错误
- xamarin.forms - 停止构建寻找 System.Threading.Tasks.Extensions.dll 4.2.0.0
- python - 有没有办法可以为子线程保留上下文本地变量?
- spring-boot - 加载 BulkApi 时找不到方法 readString(Path)
- python - Python 输出格式
- javascript - 如何添加添加按钮以在 Angular 2/4/6/8 Multiselect Dropdown 中输入动态值?
- javascript - 如何将 kendoMultiSelect 选定值存储在数组变量中?
- sql - 包括带有记录的版本号