缺少 CORS 'Access-Control-Allow-Methods'
CORS missing 'Access-Control-Allow-Methods'
我已经配置了一个 OpenApi 端点,但某些服务无法连接。
例如 Built.io Flows 可以读取 OpenAPI 规范 (JSON),但是当我 select 操作时崩溃,Azure 逻辑应用程序告诉我存在潜在的 CORS 问题导入 OpenApi 规范时。
不过其他服务可以正常工作,例如:
他们正确获取了 OpenApi 文档 (v3.0.1) 并将其标记为有效。
为了调试问题,我暂时允许所有方法、来源和 headers。
这是 pre-flight 请求的示例输出:
curl --request OPTIONS
--url https://my-endpoint
--header 'accept: application/json'
--header 'access-control-request-headers: X-Test'
--header 'access-control-request-method: GET'
--header 'origin: https://flow.built.io'
--head
并回复:
HTTP/1.1 200 OK
Cache-Control: no-store
Server:
X-Frame-Options: DENY
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Test
Access-Control-Max-Age: 60
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcYWFtXFNDSFxzdHlsZWxhYnMubVxzcmNcU3R5bGVsYWJzLk0uUG9ydGFsLldlYi5VSVx2MVxvcGVuYXBpXERlbW9Eb21haW4=?=
X-Content-Type-Options: nosniff
Date: Wed, 07 Aug 2019 11:21:01 GMT
Content-Length: 0
实际要求:
curl --request GET
--url https://my-endpoint
--header 'accept: application/json'
--header 'origin: https://flow.built.io'
--head
并回复:
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Length: 775
Content-Type: application/json; charset=utf-8
ETag: "Lk4Y9t0X5UEvgxtRUQ0MGoqYu4l4cN53Ji5NpB3lhzI="
Server:
X-Frame-Options: DENY
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcYWFtXFNDSFxzdHlsZWxhYnMubVxzcmNcU3R5bGVsYWJzLk0uUG9ydGFsLldlYi5VSVx2MVxvcGVuYXBpXERlbW9Eb21haW4=?=
X-Content-Type-Options: nosniff
Date: Wed, 07 Aug 2019 11:26:00 GMT
CORS headers 在我看来是正确的,但是缺少 'Access-Control-Allow-Methods'?这可能是问题所在吗?
我正在使用 ASP.NET Framework with 'Microsoft.AspNet.WebApi.Cors' 5.2.7,按照这里描述的配置 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
在我的控制器上我有这个属性:
[EnableCors(origins: "*", headers: "*", methods: "*", exposedHeaders: "*", PreflightMaxAge = 60)]
我发现了问题...Built.io 和 Azure 逻辑应用程序不支持 Swagger/OpenApi 版本 3。问题不是 CORS,即使 Azure 逻辑应用程序如此声明。
我已经配置了一个 OpenApi 端点,但某些服务无法连接。
例如 Built.io Flows 可以读取 OpenAPI 规范 (JSON),但是当我 select 操作时崩溃,Azure 逻辑应用程序告诉我存在潜在的 CORS 问题导入 OpenApi 规范时。
不过其他服务可以正常工作,例如:
他们正确获取了 OpenApi 文档 (v3.0.1) 并将其标记为有效。
为了调试问题,我暂时允许所有方法、来源和 headers。
这是 pre-flight 请求的示例输出:
curl --request OPTIONS
--url https://my-endpoint
--header 'accept: application/json'
--header 'access-control-request-headers: X-Test'
--header 'access-control-request-method: GET'
--header 'origin: https://flow.built.io'
--head
并回复:
HTTP/1.1 200 OK
Cache-Control: no-store
Server:
X-Frame-Options: DENY
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Test
Access-Control-Max-Age: 60
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcYWFtXFNDSFxzdHlsZWxhYnMubVxzcmNcU3R5bGVsYWJzLk0uUG9ydGFsLldlYi5VSVx2MVxvcGVuYXBpXERlbW9Eb21haW4=?=
X-Content-Type-Options: nosniff
Date: Wed, 07 Aug 2019 11:21:01 GMT
Content-Length: 0
实际要求:
curl --request GET
--url https://my-endpoint
--header 'accept: application/json'
--header 'origin: https://flow.built.io'
--head
并回复:
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Length: 775
Content-Type: application/json; charset=utf-8
ETag: "Lk4Y9t0X5UEvgxtRUQ0MGoqYu4l4cN53Ji5NpB3lhzI="
Server:
X-Frame-Options: DENY
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: *
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcYWFtXFNDSFxzdHlsZWxhYnMubVxzcmNcU3R5bGVsYWJzLk0uUG9ydGFsLldlYi5VSVx2MVxvcGVuYXBpXERlbW9Eb21haW4=?=
X-Content-Type-Options: nosniff
Date: Wed, 07 Aug 2019 11:26:00 GMT
CORS headers 在我看来是正确的,但是缺少 'Access-Control-Allow-Methods'?这可能是问题所在吗?
我正在使用 ASP.NET Framework with 'Microsoft.AspNet.WebApi.Cors' 5.2.7,按照这里描述的配置 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
在我的控制器上我有这个属性:
[EnableCors(origins: "*", headers: "*", methods: "*", exposedHeaders: "*", PreflightMaxAge = 60)]
我发现了问题...Built.io 和 Azure 逻辑应用程序不支持 Swagger/OpenApi 版本 3。问题不是 CORS,即使 Azure 逻辑应用程序如此声明。