跨域(非同源策略请求)
什么是同源?
- 协议
- 域名
- 端口
这三者一致就是同源,有一项不一致就是非同源
1.jsonp
- script
- img
- link
- iframe
- …
通过这些标签的src属性。传递给服务端一个参数,当客户端接收到返回的
不存在跨域请求的限制
问题: - jsonp只能进行GET请求
- 需要服务器的支持
2.CORS跨域资源共享
-
客户端发送ajax请求
-
服务端设置相关的请求头信息(需要处理options试探性请求)
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Headers', 'X-Requested-With, mytoken')
res.header('Access-Control-Allow-Headers', 'X-Requested-With, Authorization')
res.setHeader('Content-Type', 'application/json;charset=utf-8')
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')
res.header('X-Powered-By', ' 3.2.1')
if (req.method == 'OPTIONS'){
res.send('ok')
return
}
next()
})