在線上的CRM網站中,對接OBS做了一個專門的公共服務,公共服務使用的http協議,在頁面中調用接口時出現錯誤:
The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
錯誤原因:
HTTPS頁面里動態的引入HTTP資源,比如引入一個js文件,會被直接block,在HTTPS頁面里通過AJAX的方式請求HTTP資源,也會被直接block掉的。
解決辦法:
頁面的head中加入:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
意思是自動將http的不安全請求升級為https
也可以在配置的接口地址中, 把前面的HTTPS或者HTTP去掉, 就像這樣://xxx.com.cn/xxx/xxx/UploadFileToOBS
效果類似。
但這樣做了以后,像js資源等不會再出現問題,但請求接口依然會報錯:
瀏覽器中會輸出net::ERR_SSL_PROTOCOL_ERROR錯誤net::ERR_CERT_COMMON_NAME_INVALID
在網上查看資料后,解決此問題的辦法就是,將接口使用https協議,並使用正確的SSL證書,可以通過nginx配置,將接口服務添加https綁定443端口,並選擇證書后,問題解決!