整站HTTPS后的跨域請求 CORS是否還有效?


| 導語 

手Q馬上就要全量https了,很多業務都有跨域ajax請求的需求,原來使用的CORS頭在HTTPS環境中還繼續能用嗎?我搜遍了谷歌、百度,都沒看到有明確的答案,那么就自己來嘗試一下吧。

 

關於CORS在HTTPS環境下到底效果如何,一直沒找到明確的答案。在MDN等網頁只能看到CORS是解決HTTP跨域的方案,或者HTTP訪問HTTPS/HTTPS訪問HTTP都屬於跨域范圍,但沒有人提到兩個HTTPS站點能否通過CORS互相訪問。那么,就自己動手吧。

 

首先,使用nodejs搭建一個https服務器。

而搭建https服務器前,我們需要先手工搞個證書。

具體可以使用openssl自行創建,我參考的是:https://cnodejs.org/topic/54745ac22804a0997d38b32d

 

然后代碼跑起來

const https = require('https');
const fs = require('fs');

const options = {
    key: fs.readFileSync('./cert/ca-key.pem'),
    cert: fs.readFileSync('./cert/ca-cert.pem'),
    passphrase: '123456'
};

https.createServer(options, function (req, res) {
    res.writeHead(200);
    res.end(fs.readFileSync('./https.html'));
}).listen(443);

 

 

 

頁面代碼

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    /* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */
    //這里省略10000字節的代碼,自行補充吧
</script>

<script>
    $.get('//imgcache.qq.com/zzapp/health/js/config/qqhealth_score_strategy.json', function (ret) {
        console.log(ret);
    });
</script>
</body>
</html>

 

 

這次測試的域名是weather.mp.qq.com,ajax訪問的域名是imgcache.qq.com,原來http時代,已經做好了cors授權了。

 

那么運行后,能看到打印的json信息,就表示正常訪問。

 

好了,等了半天,估計大家只需要一個答案:OK,正常訪問。


免責聲明!

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



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