| 导语 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,正常访问。