我有一个ECB实例在ELB后面运行,为此我使用AWS Certificate Manager(ACM)启用HTTPS。如我在几个地方建议的那样,我将HTTP(端口80)和HTTPS(443)映射到我的实例的HTTP(端口80)。AJAX调用失败,出现混合内容HTTP/HTTPS错误,无法强制HTTPS

我也能加入这些行.htaccess文件强制安全连接:

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteCond %{HTTP:X-Forwarded-Proto} ^http$

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

所有这一切工作粉墨登场。所有页面按预期显示安全内容,控制台中没有关于混合内容的警告。

仅在我进行AJAX调用的页面上出现关于混合内容的错误,并且仅在Chrome中出现。 FireFox按预期工作,但控制台仍然显示错误。

错误(火狐):

错误(铬):

我打开chrome://net-internals/,从我可以看到有两个呼叫的第一个接收HTTP 301 Permanent Redirect,第二个失败,因为重定向指向一个HTTP网页,而不是HTTPS。

AJAX调用看起来是这样的:

$url = "/myapi/get_company?code=" + e;

apiJson = $.ajax({

url: $url,

dataType: 'json',

data:{

limit:8

},

success: function(data) { //Some code here },

error: function(jqXHR, textStatus, errorThrown) { //Some code here }

});

我也试图让完整的URL包括协议,但没有有所作为。

+0

为什么你需要条件RewriteCond%{HTTPS}!= on? –

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐