uni-app uni.request请求头被拦截
uni-app uni.request请求头被拦截
详细问题描述
[内容]
uni-app 项目运行chrome浏览器,使用uni.request发起请求,打开控制台-Network选项栏中,查看该请求,出现Provisional headers are shown
(看不到cookie),然而用axios请求库请求同一个url,请求头未被拦截(看得到cookie)。
[步骤]
uni.request 发起任意请求,会出现Provisional headers are shown
,以致于服务端拿不到session
[结果]
[期望]
IDE运行环境说明
系统 | HBuider X 版本 |
---|---|
win10 | 2.1.3.20190723 |
uni-app运行环境说明
运行端是h5
附件
联系方式
[QQ] 604748948
更多关于uni-app uni.request请求头被拦截的实战教程也可以访问 https://www.itying.com/category-93-b0.html
应该是被插件(比如跨域请求插件)拦截了吧,找一下两个请求的区别:
比如一个跨域从localhost请求,一个不跨域
更多关于uni-app uni.request请求头被拦截的实战教程也可以访问 https://www.itying.com/category-93-b0.html
服务端代码一致,区别是: 用axios正常 用uni.request不正常
回复 6***@qq.com: 在当前出现此“问题”的项目使用axios是否正常?
回复 6***@qq.com: 我用着没问题,而且我看了他们的源码没发现什么不妥(https://github.com/dcloudio/uni-app/blob/master/src/core/service/api/network/request.js)你仔细检查检查,你的项目进度可能是被自己的智商影响的。
回复 深海智行: 大神你好!你说的对极了,被我自己智商影响了!他们除了H5,其他端压根不支持cookie。
回复 深海智行: 不过社区里面看你喷人已经是第二次了,脸熟,以后别喷我
回复 6***@qq.com: 其他端也支持的,只不过不是自动的,需要自己设置,我是按照这个改的:https://github.com/charleslo1/weapp-cookie
回复 6***@qq.com: 看了一下他的问答历史,没发现喷人啊,有些回答还是靠谱的
回复 龙雨溪: 有必要用cookie吗 就H5端不就好了,还那么麻烦。只管H5就行
回复 龙雨溪: 根本没解决问题!
为什么会产生这个问题呀, 无论我怎么改配置都不行
同问
我也是啊,什么情况啊?,
之前用uni.uploadFile上传的好好的,
现在突然不行了(微信小程序不行,html还是正常的)
这个问题是由于uni.request在H5端默认使用了XHR请求,而浏览器安全策略导致的跨域请求头被拦截。以下是解决方案:
- 确保服务端已正确配置CORS,允许跨域请求携带cookie:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: 具体域名(不能是*)
- 在uni.request中设置withCredentials为true:
uni.request({
url: 'your_api_url',
method: 'POST',
withCredentials: true, // 关键配置
header: {
'Content-Type': 'application/json'
},
success: (res) => {
console.log(res);
}
});
- 检查uni-app项目的manifest.json中是否配置了正确的h5选项:
"h5" : {
"devServer" : {
"proxy" : {
"/api" : {
"target" : "your_target_url",
"changeOrigin" : true,
"secure" : false
}
}
}
}