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

| 導語 javascript

手Q立刻就要全量https了,不少業務都有跨域ajax請求的需求,原來使用的CORS頭在HTTPS環境中還繼續能用嗎?我搜遍了谷歌、百度,都沒看到有明確的答案,那麼就本身來嘗試一下吧。html

 

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

 

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

而搭建https服務器前,咱們須要先手工搞個證書。ajax

具體能夠使用openssl自行建立,我參考的是:https://cnodejs.org/topic/54745ac22804a0997d38b32djson

 

而後代碼跑起來跨域

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受權了。app

 

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

 

好了,等了半天,估計你們只須要一個答案:OK,正常訪問。

相關文章
相關標籤/搜索