Access-Control-Allow-Methods 和 Microsoft Edge,适用于 Firefox 和 Chrome

Access-Control-Allow-Methods and Microsoft Edge, works with Firefox and Chrome

我正在使用 superagent 对我的 WebApi 后端执行 DELETE 调用。

飞行前电话说 Access-Control-Allow-Methods*, GET, POST, PUT, DELETE, OPTIONS。使用 DELETE 方法在 Firefox 和 Chrome 中工作正常,但在 Edge 中无效(可能与 IE 相同?)。

我在我的控制台中收到此错误:

SEC7124: Request method DELETE was not present in the Access-Control-Allow-Methods list.

它的预检调用 returns 在 Edge 的开发工具中与 Chrome 和 Firefox 相同。服务器是 运行 CORS。

显然 Edge 拒绝将 * 作为 Access-Control-Allow-Methods 的值,尽管它在 CORS 和 HTTP 规范下在语法上是有效的。但是请注意,* 而不是 作为 Access-Control-Allow-Methods 中的通配符具有语义意义。它的字面意思是指具有单字符名称 * 的 HTTP 方法。除非您的服务器实际上需要一个名为 * 的 HTTP 方法,否则没有理由包含此方法名称。

从列表中删除 * 以使您的请求在 Edge 上有效。

IE Edge 也不接受多个 headers,即。

Access-Control-Allow-Methods: POST
Access-Control-Allow-Methods: PUT

而且你必须return一个

Access-Control-Allow-Methods: POST, PUT