首页 > 编程知识 正文

h5网页编辑器,h5制作软件app排名

时间:2023-05-03 14:02:55 阅读:45846 作者:2560

前言

这段时间我向电影网站添加了付费在线观看权限,但是以前的APP没有添加登录模块,所以现在必须添加。 在基于H5 MUI的研发和实现过程中,APP真的吃了不少苦头。

过程

虽然开发H5 APP只需要通过WebView操作html代码,编写登录页很容易! 完成登录并成功登录后,即使再次启动另一个ajax请求,登录仍保持未登录状态。 也就是说,ajax登录后,服务器响应的Set-Cookie在WebView中不起作用。

因此,登录后保存服务器返回的JSESSIONID,后面的ajax请求添加cookie,但mui.ajax headers未成功添加cookie!

在DCloud社区进行相关问答q&; 搜索a后,官方说plus.navigator.setCookie )可以设置WebView的Cookie,所以我去试了一下,发现没什么用。 经过多次辛苦,我们发现这是离线打包的原因。 在Hbuilder中基于进行调试没有问题。 无奈之下,播放器部分必须用安卓本机代码开发,所以必须离线打包。 MUI的这个H5开发APP是漏洞。 我不想再说了。 这个问题找不到解决方法。

此时,代码没有问题。 这是离线打包SDK的问题。 头变大了,心里奔腾着一万匹草泥马,发誓不再用美体研制APP了。

解决方案

对于这种情况,解决办法当然有,只是很复杂。

方案1 :

通过将H5的ajax交给Android本机代码来设置Http请求的cookie也没有问题。 实现所需的是创建插件接口,在Java代码中实现带cookie的Http请求,然后在js代码中调用该接口。 如果离线打包SDK没有问题的话,本来能用plus.navigator.setCookie ()的一个代码解决就这么复杂了,不采用了!

方案2 :

就算打碎了不熟悉Tomcat服务器的头,我想也想不出这个方案。 稍微了解Http协议常识的人都知道,浏览器和服务器保持会话登录状态通常是利用session实现的。 当然也可以cookie,但不安全。

实际上,session的实现方案可能也需要使用cookie。 对于Java Web,在浏览器访问服务器时将生成JSESSIONID。 通常,您会发现它存在于cookie中。 一些早期的网站暴露在网址上。 因此,很多人可能没有考虑这个方案。

由于在WebView中ajax设置Cookie失败,是否可以将JSESSIONID作为http请求参数传递到服务器后台?

我最初的想法是:

ajax登录,spring MVC控制器的session.getId ()获取JSESSIONID并回复客户端。

接收登录结果,并将JSESSIONID通过plus.storage.setItem ()本地保存。

如果请求需要权限的ajax,则从本地获取JSESSIONID并连接到url。

上述做法有难点。 后端获取JSESSIONID后,一方面搜索如何通过JSESSIONID获取相应的HttpSession对象,但很少有好的方案。 唯一可能的做法是通过实现http会话监听器接口,自己在一个Map中存储所有会话。 这样,就可以根据JSESSIONID从该映射中检索对应的session对象。 但是,这个剧本并不优雅。 这有点多余,因为Tomcat本身包含所有会话。 另外,该如何控制session的时效性呢?

到此为止,我的心已经崩溃了。

到黄河并不是不朽的,关键在于JSESSIONID。 于是检索JSESSIONID,很多文章就是如何从url中去除JSESSIONID。 看这里,不是我要找的答案,相反,就是如何将这个JSESSIONID通过url而不是cookie传达给后台。

我终于找到了答案:

如前所述,session实现方案可以通过cookie传递JSESSIONID,也可以在url中传递JSESSIONID。 但是,url传递JSESSIONID不需要在后端手动根据JSESSIONID获取对应的session对象,服务器也没有想到。

有一个名为url传递JSESSIONID的方案是为了允许客户端在客户端禁止cookie后与服务器保持会话。

这里,我们对服务器会话有了新的认识。

最终解决办法如下:

http请求地址中携带了JSESSIONID,如下所示:

与常规http参数不同,它以分号开头并添加到地址后面(参数以问号添加)。

这样,服务器就会自动获取session_id并找到相应的HttpSession对象,而不需要我们手动获取(手动获取在前面已经分析过,但没有什么好的实现方法)。 所以,是的。 就那么简单。 即使WebView cookie设置不成功也没什么大不了的。 直接使用url传递session_id既方便又快捷。

但是,以前的web.xml的配置有点错误。 因为服务器会话混乱,找不到问题,所以禁止将url传递给session_id。 也就是说,前面提到的许多文章都在web.xml中添加了以下关于从url中删除jsessionid的部署:

饼干

这简直就是坑爹,这样设置可以从url中去掉jsessionid,是为了干净吗? 如果客户端禁止cookie,则需要登录的所有会话操作都将无法使用。 现在想想,当时真的是急病去看医生。

最后,如果您诚实地删除此段配置,则可以在url中传递jsessionid,从而保持登录会话的状态,并解决问题。

标签:登录、url、APP、H5、会话、cookie、服务器、JSESSIONID

资料来源: https://www.cn blogs.com/30go/p/14170623.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。