来自 IE 或 Firefox 的 CORS 请求中没有 Referer header

No Referer header in CORS request from IE or Firefox

我正在尝试向服务器发送 CORS POST 请求。

在 Chrome 中,这按预期工作 - OPTIONS 预检请求发送到服务器,服务器响应访问控制 headers,发送 POST 请求。当我尝试在 IE 或 Firefox 中执行此操作时,没有随 OPTIONS 请求发送引用,因此我无法添加 access-control-allow-origin header(因为这是通过编程完成的)。

Javascript 是:

    $.ajax({
        url: $(this).attr('href'),
        type: 'POST',
        xhrFields: {
            withCredentials: true,
        },
        contentType: 'application/json; charset=utf-8;',
        data: JSON.stringify(data),
        success: function (response) {
            alert(response);
        },
    });
    return false;
});

Chrome中的header如下:

Firefox中的header如下:

有没有办法保证 referrer 将与 OPTIONS 预检请求一起发送?如果没有 - 是否有另一种方法来获取引用 URL 以便我可以添加允许来源 header?

通过使用与预检请求一起发送的 Origin header 解决了这个问题。因此,如果来源 URL 是可接受的主机之一,请添加 access-control-allow-origin header 和来源 url。