1.什么是跨域梯皿?
跨域仇箱,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的东羹,是瀏覽器施加的安全限制剂桥,
所謂同源是指,域名,協(xié)議,端口均相同
舉例http://baidu.com:8080
1.http 協(xié)議
2.baidu.com 域名
3.80 端口
2.如何解決
1jsonp跨域
jsonp跨域是JavaScript設(shè)計(jì)模式中的一種代理模式席吴。在html頁面中通過相應(yīng)標(biāo)簽從不同域名下加載靜態(tài)資源文件是被瀏覽器允許的鼻弧,一般,我們可以動(dòng)態(tài)的創(chuàng)建script標(biāo)簽,再去請(qǐng)求一個(gè)帶參網(wǎng)址來實(shí)現(xiàn)跨域通信
// 原生的實(shí)現(xiàn)方式
let script = document.createElement('script');
script.src = 'http://www.baidu.com';
document.body.a(script)
function callback(res) {
console.log(res)
}
2.CORS資源共享(在header中設(shè)置請(qǐng)求頭)
var express = require('express');
var app = express();
var allowCrossDomain = function (req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://localhost:8888');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
app.use(allowCrossDomain);