应用程序实施SSL后,GET请求引发错误:混合内容:此请求已被阻止;内容必须通过HTTPS"

时间:2015-05-29 20:08:26

标签: angularjs http ssl https flask

  

混合内容:' https://www.example.com/dashboard'是   通过HTTPS加载,但请求不安全的XMLHttpRequest端点   ' http://api.example.com/inventory/10/&#39 ;.此请求已被阻止;   内容必须通过HTTPS提供。

我们有这个Angular Web应用程序,它在后端与Flask一起运行。 在我们实施SSL之前,一切正常。之后,我们到处都会遇到这个奇怪的错误。

现在,我的dashboard.js中的$ http.get请求肯定在调用" https://api.example.com/inventory/10"在下面的代码中,但错误是声称我们正在尝试请求" http"代替。

$http.get($rootScope.baseUrl+'/inventory/' + item.id)

其中rootScope.baseUrl是" https://api.example.com"。

这真的很奇怪,因为一些GET请求从我们的Web应用程序传到我们的后端,但有些请求正在抛出这个奇怪的错误。

这是在Chrome控制台的“网络”标签中出现错误的标题。

  

请求网址:https://api.example.com/inventory/10请求标头   临时标题显示为Accept:application / json,text / plain, /   起源:https://www.example.com   引用者:https://www.example.com/dashboard

2 个答案:

答案 0 :(得分:2)

这是一个奇怪的案例,从URL修复所有内容的末尾删除正斜杠。不知何故,每当我们在Angular中使用$ http作为GET请求时,如baseurl + inventory.id +" /",它会发出一个http请求,但只要删除该斜杠,就会发出https请求正确。

仍然很困惑

答案 1 :(得分:2)

我认为问题的根源在于服务器重定向。我能够通过Django的SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')设置解决同样的问题(它在AWS平衡器后面运行)。这是documentation