代码说明:
X5内核模式下,传入远程验证码url到uniapp页面,cookies无法设置
<u-form-item label="验证码">
<u-input placeholder="请输入验证码" type="text" v-model="form.captchaImg" />
<view slot="right">
<u-image width="128rpx" height="40rpx" :src="catchaUrl"></u-image>
</view>
</u-form-item>
6 个回复
DCloud_Android_DQQ
你提供一下 复现问题的代码 或者你留一下qq. 提供一下 app id
DCloud_Android_DQQ
我用最新的版本alpha. 回归X5 cookie同步的测试用例。 测试没有问题。
你提供一下你的app信息。我们看一下。
悠哉的农民 (作者)
打包appid:UNI3952F0F 测试账号:llllll 密码:llllll
2020-11-22 14:19
DCloud_Android_DQQ
回复 悠哉的农民: 测试账号已登入。 操作步骤呢?
2020-11-23 11:26
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 新装APP-点击底部插件按钮随意安装一个新闻插件,在首页点击刚才安装的插件首次点击是不需要登陆账号的因为是试用就可以进入,退出来后再次点击提示需要登陆账号,这时候登录账号后重新来到首页点击刚才的插件是可以进入的。我们完全退出APP后重新进入APP,就无法再打开刚才的插件了,一直提示未登陆状态,
2020-11-23 11:35
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 我测试出来发现,X5内核和原生内核他们的cookie是不共享的,而request取的cookies是从原生里取得。所以造成了X5登录挤下线了原生内核的登录,然后造成request无法成功请求。你们可以查查看
2020-11-23 11:41
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: plus.navigator.getCookie();我用的这个命令取得cookies,发现的这个问题。然后X5内核能否做到首次加载成功后立即使用X5而不是需要重新打开APP的那种。
2020-11-23 11:44
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 测试好后麻烦回复一下哈,如果是我自己的问题我好去修复
2020-11-23 12:03
DCloud_Android_DQQ
回复 悠哉的农民: 我这边暂时没能发现有什么问题。 你最好从你那边逻辑上也排查一下
2020-11-23 15:35
DCloud_Android_DQQ
1 X5内核和原生内核他们的cookie是不共享的. 差不多是这样,两个内核是分开储存的。
但是,request的时候会对二者进行合并。 取并集。
DCloud_Android_DQQ
2 我这边测试话,登录的时候 没有监听到cookie写入操作。 你登录的cookie 操作是如何实现的。
悠哉的农民 (作者)
public function login($param)
{
$data = [];
$data['user_name'] = htmlspecialchars(urldecode(trim($param['user_name'])));
$data['user_pwd'] = htmlspecialchars(urldecode(trim($param['user_pwd'])));
$data['verify'] = $param['verify'];
$data['openid'] = htmlspecialchars(urldecode(trim($param['openid'])));
$data['col'] = htmlspecialchars(urldecode(trim($param['col'])));
2020-11-23 13:48
悠哉的农民 (作者)
cookie肯定写入了啊,没有监听到cookie写入操作的话webview应该也不可能可以进行其他操作,如点击修改资料。
2020-11-23 13:49
DCloud_Android_DQQ
回复 悠哉的农民: 你没明白我的意思。 我的意思是 登录的时候 写入的cookie 是写入到浏览器的中 还是 request 写入的
2020-11-23 15:02
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: webview登录后后端写入的啊。写入到浏览器中的。
2020-11-23 17:14
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 我发现X5内核下无法使用plus.navigator.setCookie和plus.navigator.removeAllCookie。你们那边看下是不是这个的原因造成的。
2020-11-23 17:52
DCloud_Android_DQQ
回复 悠哉的农民: 好的。 我确认一下 这个两个api的情况 回复你
2020-11-24 11:06
DCloud_Android_DQQ
回复 悠哉的农民: 应该不只是 x5内核下不支持吧。 uni-app 应用是 普通浏览器内核下也不支持 cookie 操作。这是一个 已知的缺陷。 目前正在开发中
2020-11-24 12:37
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 我用evalJS可以在webview里成功获取到更新的cookies,但是plus.navigator.getCookie();获取的还是旧的cookies。
2020-11-24 16:15
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: <template>
<view class="">
<web-view :webview-styles="webviewStyles" :src="url" ></web-view>
</view>
</template>
<script>
var box,currentWebview;
export default {
data() {
return {
webviewStyles: {
progress: {
color: '#00aaff',
top:"0",
bottom:'0'
},
zindex:1,
videoFullscreen:'landscape-primary'
},
url:'http://user.688ing.com/index.php/user/index.html'
}
},
onReady() {
currentWebview = this.$scope.$getAppWebview();
box = currentWebview.children()[0];
box.onloaded = function(){
var a = plus.navigator.getCookie();
console.log(a);
box.evalJS("document.addEventListener('plusready',function(){plus.storage.setItem('UserCookies',document.cookie);alert(document.cookie);}, false);");
}
}
}
</script>
<style>
</style>
2020-11-24 16:15
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 我用evalJS可以在webview里成功获取到更新的cookies,但是plus.navigator.getCookie();获取的还是旧的cookies。代码如上。appid:UNI3952F0F这个已经重新打包,只需要在我的登录就可以调试看到了
2020-11-24 16:18
DCloud_Android_DQQ
回复 悠哉的农民: plus.navigator.getCookie(); 这个函数是有问题的。 这是一个已知缺陷。 你是通过这个函数获取的cookie吗
2020-11-24 17:24
DCloud_Android_DQQ
明确存在一个问题 plus.navigator.getCookie(); 这个函数是有问题,不支持X5内核。 这是一个已知缺陷。
悠哉的农民 (作者)
那这么说X5内核下既不能设置cookies也不能查询cookies,所以X5不就是不能处理request的cookies吗
2020-11-25 18:26
DCloud_Android_DQQ
回复 悠哉的农民: 上个版本修复的问题是 uni.request 和 x5浏览器内核的cookie 共享。 如果需要我可以提供相关的测试用例给你。 针对 plus.navigator.getCookie(); 无法获取x5cookie 的问题 我们也已经在修复了。 预计最近版发布。
2020-11-26 10:52
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 示例来一份吧,我看看是不是我手机的问题
2020-11-26 12:15
悠哉的农民 (作者)
回复 DCloud_Android_DQQ: 现在情况是X5登陆账号后登陆其他的账号依旧是之前的账号,比如先登录LLLLLL再退出登录QQQQQQ,request使用的还是llllll的cookies
2020-11-26 13:33
DCloud_Android_ST
HX3.0.0已修复