概念
CORS: 全称Cross=origin resource sharing, 即跨域资源共享,它允许浏览器向跨域服务器发送Ajax请求,客服了Ajax只能同源使用的限制。
相当于设置白名单
Access-Control-Allow-Origin:'http://localhost:3000'
// * 允许所有的客户端访问该服务器
Access-Control-Allow-Origin:'*'
实现
服务端设置
const express = require("express")
const path = require("path")
const app = express()
// 开启静态资源访问
app.use(express.static(path.join(__dirname,'public')))
// 由于跨域 请求变成了 options
app.use(function(req, res, next){
console.log('/all-test', req.method)
// 允许那些客户端访问
// * 允许所有客户端访问 允许客户端'http://localhost:3000'
res.header('Access-Control-Allow-Origin','*')
// 允许客户端使用那些请求方法访问我 get post get,post * 所有
res.header('Access-Control-Allow-Methods','get,post')
//
res.header('Access-Control-Allow-Headers', 'Content-Type');
// res.header("Access-Control-Allow-Origin", req.headers.origin);
// res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
// 允许客户端使用那些请求方法访问
// res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
// 允许客户端发送跨域请求时携带cookie信息
// res.header("Access-Control-Allow-Credentials","true");
// res.header("X-Powered-By",' 3.2.1')
req.method === "OPTIONS"? res.send(200):next();/*让options请求快速返回*/
})
app.get('/test',(req,res)=>{
console.log('/test')
res.send("ok")
})
app.listen(3001,()=>{
console.log("s2 服务器启动")
})