跨域:
浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了.
协议,域名,端口号,有任何一个不同就是跨域
第一种:设置请求头
const http = require("http");
const sever = http.createServer();
sever.on("request",(req,res)=>{
res.setHeader("Access-Control-Allow-Origin","*");
res.setHeader("Access-Control-Allow-Methods","DELETE,PUT,GET,POST,OPTIONS")
if(req.url == "/getData" && req.method == "GET"){
const data = {
name : "张三",
age : 10
};
res.end(JSON.stringify(data))
}
})
sever.listen(3000)
第二种:代理服务器
const express = require("express");
const app = express();
app.all("*",(req,res,next)=>{
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Methods","DELETE,PUT,GET,POST,OPTIONS")
next()
})
app.get("/getData", (req, res) => {
const data = {
name : "张三",
age : 10
};
res.send(data)
})
app.listen(3000)
第三种:jsonp
$.ajax({
type:"GET",
url : "http://localhost:3000/jsonp",
dataType : "jsonp",
success : function(data){
console.log(data)
}
})
function addScript(src){
var script = document.createElement("script")
script.src = src;
document.body.appendChild(script)
}
window.onload = function(){
addScript("http://localhost:3000/jsonp?callback=fun")
}
function fun(data){
console.log(data)
}