跨域遇到的一系列问题
栏目: JavaScript · 发布时间: 7年前
内容简介:前端使用的vue,后端使用的express。没有使用vue的proxyTable,就是作为后端解决一下这个跨域解决办法:设置Access-Control-Allow-Orign。我的后端一开始只设置了允许http://pylon.xueersi.com域名,但是没有带上端口号。当前端设置withCredentials:true时,表示前端允许跨域的后端接口种cookie
前端使用的vue,后端使用的express。没有使用vue的proxyTable,就是作为后端解决一下这个跨域
解决代码
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://h5.xesv5.com:8081')
res.header('Access-Control-Allow-Credentials', true)
res.header("Access-Control-Allow-Headers", "Content-Type,Accept,X-Requested-With,traceid,rpcid")
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS")
res.header("Content-Type", "application/json;charset=utf-8")
if (req.method == 'OPTIONS') {
res.sendStatus(200)
} else {
if (req.path.indexOf('/getUserInfo') < 0 && (!req.session || !req.session.userInfo)) {
res.send({
stat: 1230,
message: '登录失效'
})
} else {
next()
}
}
})
复制代码
问题一:域名不一致的跨域提示
解决办法:设置Access-Control-Allow-Orign。我的后端一开始只设置了允许http://pylon.xueersi.com域名,但是没有带上端口号。
问题二: 后端没有设置Access-Control-Allow-Credentials
当前端设置withCredentials:true时,表示前端允许跨域的后端接口种cookie
解决办法:后端也需要在请求头设置Access-Control-Allow-Credentials:true
问题三:设置Credentials后,Access-Control-Allow-Origin需要指定域名,不可以设置*
问题四:前端在请求头上设置了参数,后端需要允许请求头设置该参数
解决办法:如果前端需要在请求头里加上token字段,后端这边需要Access-Control-Allow-Headers设置
res.header("Access-Control-Allow-Headers", "Content-Type,Accept,X-Requested-With,token")
复制代码
补充:axios请求头设置参数
config.headers.common['token'] = 123 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Go语言学习笔记
雨痕 / 电子工业出版社 / 2016-6 / 89
作为时下流行的一种系统编程语言,Go 简单易学,性能很好,且支持各类主流平台。已有大量项目采用 Go 编写,这其中就包括 Docker 等明星作品,其开发和执行效率早已被证明。本书经四年多逐步完善,内容覆盖了语言、运行时、性能优化、工具链等各层面知识。且内容经大量读者反馈和校对,没有明显的缺陷和错误。上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。下卷则对运行时源......一起来看看 《Go语言学习笔记》 这本书的介绍吧!