从网站调用不安全的端点在HTTPS - nginx下运行

时间:2016-04-26 07:24:18

标签: rest nginx webserver endpoint content-security-policy

我的应用程序在HTTPS下运行,其中包含来自其中一个已知权限的有效证书。不幸的是,我使用的第三方API并不支持HTTPS。

  

结果是已知消息混合内容:mydomain.com请求了   不安全的XMLHttpRequest端点。

是否有可能 向Web服务器添加例外以允许不安全地调用此API!我正在使用Nginx BTW。

如果不是什么可以解决这个问题的其他可能性。

我有一个解决方案,但我不喜欢它,因为它会带来性能上的劣势:

实现充当代理的API,通过HTTPS接收来自应用程序的请求,并向第三方API发出请求抛出HTTP。

2 个答案:

答案 0 :(得分:3)

我也有这个问题。如果您使用https并且不想要警告/错误,页面上的所有内容都应该来请求https。如果您使用的是nginx,则无需为代理实现api。无论你实施什么,都会因为你正确猜测而受到性能影响。只需在nginx中使用代理传递即可。 在我们的配置中,我们有:

location /thirdparty/ {
        proxy pass http://thirdpartyserver/;
 }

注意代理传递中的尾部斜杠,我将所有第三方api保留为https://myserver/thirdparty/requesturl中的http。尾部斜杠在发出请求时删除了第三方。所以变成了http://thirdpartyserver/request

官方参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

答案 1 :(得分:0)

为了允许混合内容,各个用户必须在其浏览器中允许它。允许来自一个源的HTTP内容足以危及HTTPS的安全性,因此浏览器默认禁止混合内容。我看到的解决方案是:

  1. 摆脱HTTPS(我不推荐)
  2. 做你的建议和代理请求(这仍然不是很安全)
  3. 摆脱HTTP内容
  4. Google在第1步中为开发人员提供了一些建议(但基本上已在上面回应):https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content#step-1