Nginx CORS从http重定向到https

Nginx CORS从http重定向到https,nginx,redirect,cors,Nginx,Redirect,Cors,刚刚发现,当您将301重定向状态从服务器返回到CORS请求时,浏览器将随后的“Origin”头设置为“null”。显然这是出于隐私原因,但我只是在我的nginx服务器中从http转为https!哦,好吧。。你能做什么 在我的用于https的nginx配置中,我在添加CORS头之前检查$http\u origin。由于浏览器将该死的原始标题设置为“null”,因此没有将标题添加到响应中 这个问题是否存在,或者我必须确保我的原始客户端只发送https请求 希望问题不要太宽泛。协议方案是定义起源的要素

刚刚发现,当您将301重定向状态从服务器返回到CORS请求时,浏览器将随后的“Origin”头设置为“null”。显然这是出于隐私原因,但我只是在我的nginx服务器中从http转为https!哦,好吧。。你能做什么

在我的用于https的nginx配置中,我在添加CORS头之前检查$http\u origin。由于浏览器将该死的原始标题设置为“null”,因此没有将标题添加到响应中

这个问题是否存在,或者我必须确保我的原始客户端只发送https请求


希望问题不要太宽泛。

协议方案是定义起源的要素之一,所以
http://x.com
https://x.com

在CORS中,重定向后,浏览器发送
Origin:null
,这是出于设计

要克服这一问题,您有两个选择:

  • 允许
    Origin:null
    ,但请确保您理解其含义,因为这实际上意味着您允许所有来源
  • 向重定向url添加一些证据,证明这是来自服务器的有效url。一些只有服务器才能生成的秘密。当Origin:null存在时,仅当这是一个有效的秘密时才允许它

  • 隐马尔可夫模型。。这是否意味着拥有一个密钥是不安全的,因为每个人都可以在重定向响应上查看它,并且我必须处理某种公钥加密以确保安全?是的,这应该是短期密钥,其中包括一些客户端标识符,如客户端ip。您不必使用公钥/私钥,简单的对称密钥就足够了。我认为您可以通过发送带有前端代码所在文档的“内容安全策略:升级不安全请求”响应头来避免重定向。该响应头告诉浏览器:对于来自该文档的任何属于http URL的URL,在实际发出请求之前,请将其替换为https URL。试试看。如果这样做行得通,应该可以防止文档中的代码遇到您现在遇到的重定向情况。