“访问控制 - 允许 - 来源:*&#39 ;?的缺点

时间:2016-05-12 17:17:16

标签: http nginx http-headers cors

我有一个网站,其中包含一个用于静态文件的单独子域。我发现我需要设置Access-Control-Allow-Origin标头才能使某些AJAX功能正常工作,特别是字体。我希望能够从localhost访问静态子域以进行测试以及从www子域进行测试。简单的解决方案似乎是Access-Control-Allow-Origin: *。我的服务器使用nginx。

您可能希望在响应标头中使用Access-Control-Allow-Origin通配符的主要原因是什么?

3 个答案:

答案 0 :(得分:0)

例如,您可能不想使用通配符:

  1. 您的网站让我们说它的AJAX后端API在不同的域上运行,或者只是在不同的端口上运行,并且您不希望将后端API公开给整个Internet,那么您就不会发送*。例如,您的网站位于http://www.example.com,后端API位于http://api.example.com,然后API会以Access-Control-Allow-Origin: http://www.example.com回复。
  2. 如果API想要从客户端请求Cookie,则不得发送Access-Control-Allow-Origin: *,但其值必须是实际请求中的来源值。

答案 1 :(得分:-1)

我认为您可能会未经您的明确许可而让其他网站使用您的API。 想象一下,如果您有一家电子商务公司,那么另一个网站可以使用自己的外观来进行所有交易,但都得到您的支持,对您而言,这最终是一件好事,因为您最终将获得金钱,但品牌将遭受损失它的“认可”。 另一个问题可能是该网站是否将发送的有效负载更改为您的后端,以进行诸如更改传递地址之类的操作。 背后的想法只是不授权未知网站使用您的API并将其结果显示给用户。

答案 2 :(得分:-1)

您可以使用hosts文件将127.0.0.1映射到您的域名“ dev.mydomain.com”,因为您不希望使用Access-Control-Allow-Origin:*。