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

Image
Image


更多关于uni-app uni.request请求头被拦截的实战教程也可以访问 https://www.itying.com/category-93-b0.html

16 回复

应该是被插件(比如跨域请求插件)拦截了吧,找一下两个请求的区别: 比如一个跨域从localhost请求,一个不跨域

更多关于uni-app uni.request请求头被拦截的实战教程也可以访问 https://www.itying.com/category-93-b0.html


服务端代码一致,区别是: 用axios正常 用uni.request不正常

严重影响我项目进度了,麻烦DCloud协助解决,用框架的uni.request就会出现以上问题

回复 6***@qq.com: 在当前出现此“问题”的项目使用axios是否正常?

回复 深海智行: 大神你好!你说的对极了,被我自己智商影响了!他们除了H5,其他端压根不支持cookie。

回复 深海智行: 不过社区里面看你喷人已经是第二次了,脸熟,以后别喷我

回复 6***@qq.com: 其他端也支持的,只不过不是自动的,需要自己设置,我是按照这个改的:https://github.com/charleslo1/weapp-cookie

回复 6***@qq.com: 看了一下他的问答历史,没发现喷人啊,有些回答还是靠谱的

回复 龙雨溪: 有必要用cookie吗 就H5端不就好了,还那么麻烦。只管H5就行

回复 龙雨溪: 根本没解决问题!

为什么会产生这个问题呀, 无论我怎么改配置都不行

同问

我也是啊,什么情况啊?, 之前用uni.uploadFile上传的好好的, 现在突然不行了(微信小程序不行,html还是正常的)

这个问题是由于uni.request在H5端默认使用了XHR请求,而浏览器安全策略导致的跨域请求头被拦截。以下是解决方案:

  1. 确保服务端已正确配置CORS,允许跨域请求携带cookie:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: 具体域名(不能是*)
  1. 在uni.request中设置withCredentials为true:
uni.request({
    url: 'your_api_url',
    method: 'POST',
    withCredentials: true,  // 关键配置
    header: {
        'Content-Type': 'application/json'
    },
    success: (res) => {
        console.log(res);
    }
});
  1. 检查uni-app项目的manifest.json中是否配置了正确的h5选项:
"h5" : {
    "devServer" : {
        "proxy" : {
            "/api" : {
                "target" : "your_target_url",
                "changeOrigin" : true,
                "secure" : false
            }
        }
    }
}
回到顶部