【发布时间】: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 是的,我正在添加。