首页 > 解决方案 > CORS 无缘无故阻止响应

问题描述

我正在向我的服务器发出 POST 请求,并且浏览器使用 CORS 策略阻止响应(缺少 Access-Control-Allow-Origin 标头),但是当我通过 Postman 请求相同的 url 时,标头就在那里。这是我来自 Postman 的响应标头: 在此处输入图像描述

当我尝试执行 POST 请求时,这是浏览器(在本例中为 chrome)错误: 在此处输入图像描述

这是怎么回事?

标签: javascriptbrowsercors

解决方案


在非简单请求的情况下,浏览器会向同一个 url 发出 preflight OPTIONS 请求,以检查服务器是否允许跨站点请求。因此,在我允许所有 CORS 限制的情况下为 OPTIONS 请求添加新路由解决了这个问题。

...
if (webServer.method() == HTTP_OPTIONS) {
        webServer.sendHeader("Access-Control-Allow-Origin", "*");
        webServer.sendHeader("Access-Control-Allow-Methods", "*");
        webServer.sendHeader("Access-Control-Allow-Headers", "*");
        webServer.sendHeader("Timing-Allow-Origin", "*");
        webServer.send(204);
    } else {
        ...

推荐阅读