一個Https網站發送Http的 ajax請求的解決方法


但是在https網站內發送http的ajax請求報錯

可以看到是在https://127.0.0.1 請求http://kafka1:8080/api/hello便失敗。並且報錯
Mixed Content: The page at ‘https://127.0.0.1/’ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘http://kafka1:8080/api/hello’. This request has been blocked; the content must be served over HTTPS.
大致意思就是https網站內不可以發送http請求,並且http請求直接被攔截並不發送到后台服務器。

解決方案如下幾種:

修改https 為 http協議,大部分不可取
修改后台的http服務器為https協議,並修改前端代碼
修改前端代碼請求地址為nginx地址,使用當前https服務器對應的nginx轉發前端https請求發送到后台http服務器,從而不用修改http服務器。
如第三種方案

首先我的hosts如下

127.0.0.1 kafka1
1
nginx配置如下:

# 配置后台服務器地址
upstream kafka1{
ip_hash;
server 127.0.0.1:8080;
}
server {
listen 443 ssl;
server_name kafka1;

ssl_certificate shfqcert.cer;
ssl_certificate_key cert.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
root html;
index index.html index.htm;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 轉發到后台服務器
proxy_pass http://kafka1;
proxy_buffer_size 8k;
proxy_buffers 64 32k;
}
}

然后前端可以發送請求之后,后台如果沒有做跨域處理的話需要修改響應的請求頭。

服務端需要設置響應頭Access-Control-Allow-Origin為* 或者當前訪問后端服務器的地址

如當前我這里是這個訪問地址是https://localhost/

如 SpringMVC的 @CrossOrigin("https://localhost"),每個語言的都不盡相同,但都是響應頭添加Access-Control-Allow-Origin罷了

原文:https://blog.csdn.net/u013076044/article/details/84261762
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM