| 導語 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,正常訪問。