如何在Origin标头为空时允许跨源请求?

时间:2017-02-10 18:57:18

标签: javascript http cors

方案

我们有一些由第三方CMS服务托管的Javascript,我们在我们控制的服务器上有一些数据。当用户通过浏览器访问CMS(并执行我们的Javascript)时,我们希望向服务器发出跨域GET请求,并让服务器使用正确的Access-Control-Allow-Origin标头进行响应,以便浏览器接受响应。

问题

当我们检查从CMS到我们服务器的请求时,请求的Origin标头设置为null。因此,我们无法为Access-Control-Allow-Origin设置*以外的值,以使浏览器接受响应。我们不确定为什么价值为null。 JS正在我们无法完全控制的环境中执行。

潜在解决方案

我们假设Origin始终为null,并且我们无法改变它。我们可以提出的最佳解决方案是定义预共享​​秘密。当浏览器发出跨源请求时,它会添加带有秘密的自定义标头。服务器查找该标头,如果密钥匹配,则服务器添加响应标头Access-Control-Allow-Origin: *

有没有更好,更安全的方法来处理这种情况?

1 个答案:

答案 0 :(得分:0)

您需要获取浏览器设置的请求Referer标头的值,并将其用于响应Access-Control-Allow-Origin标头值