報錯的原因就是當前頁面是https協議加載的,但是這個頁面發起了一個http的ajax請求,這種做法是非法的。HTTPS頁面里動態的引入HTTP資源,比如引入一個js文件,會被直接block掉的. 在HTTPS頁面里通過AJAX的方式請求HTTP資源,也會被直接block掉的。
客戶端解決辦法
可以在相應的頁面的<head>里加上這句代碼,意思是自動將http的不安全請求升級為https
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
服務器端解決辦法
配置一下 Nginx 和 Tomcat
nginx location 添加
location / { ... proxy_set_header X-Forwarded-Proto $scheme; }
Tomcat server.xml 的 Engine 模塊下配置一個 Valve
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>