HarmonyOS 鸿蒙Next Web加载本地 file:// H5资源设置 cookie 不生效

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Web加载本地 file:// H5资源设置 cookie 不生效

项目中使用 Web组件通过 file:// 协议,加载沙盒目录中的 H5 文件,在测试中发现,H5 内部发起的网络请求,无法保存接口返回的 cookie 数据,导致其它接口拿不到 cookie 请求而报错。 Web 组件在初始化前已设置以下属性,H5内部均无法设置 cookie

webview.WebCookieManager.putAcceptCookieEnabled(true)  
webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(true)

请问怎么解决?

---------------------------------  
Web 组件加载 file:// 协议示例如下:  

file:///data/storage/el2/base/files/appModules/743350/com.csair.ehome.newspaper/index.html?1=1&timestamp=1721806436762


---------------------------------------------

更多关于HarmonyOS 鸿蒙Next Web加载本地 file:// H5资源设置 cookie 不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

Web组件提供了WebCookieManager类,用于管理Web组件的Cookie信息 可以根据api判断cookie是否存在 详情

url必须是http协议,目前鸿蒙不支持resource://rawfile/xxx/这个形式的url,可以将其转成http协议使用

  1. 通过拦截主资源的方式解决 主资源请求改为http请求,拦截主资源,读取本地的文件返回给内核

  2. 设置cookie的时候指定 samesite=none;secure 但是这种需要把file协议里发起的http请求改为https,需要服务器支持。

同样的问题在android上也存在

详情

android上给的替代方案也是通过资源拦截的方式

设置cookie的时候指定 samesite=none;secure 但是这种需要把file协议里发起的http请求改为https,需要服务器支持。或改成同域名请求

更多关于HarmonyOS 鸿蒙Next Web加载本地 file:// H5资源设置 cookie 不生效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我尝试给cookie加了samesite=none;secure 但是还是不行

在HarmonyOS鸿蒙系统中,针对Next Web加载本地file://协议的H5资源时设置cookie不生效的问题,可能的原因及解决方案如下:

  1. 协议限制file://协议出于安全考虑,通常不允许设置或读取cookie。这是因为本地文件系统访问不受同源策略限制,允许cookie可能会导致安全漏洞。

  2. 解决方案

    • 使用HTTP服务器:将H5资源部署在一个本地或远程的HTTP服务器上,通过http://https://协议访问。这样,cookie设置和读取将遵循正常的浏览器行为。
    • 修改代码逻辑:如果必须使用file://协议,考虑将需要存储的数据通过其他方式(如localStorage、sessionStorage或IndexedDB)进行管理,而不是依赖cookie。
  3. 注意事项

    • 确保HTTP服务器正确配置了cookie相关的响应头,如Set-Cookie
    • 检查H5代码中设置cookie的方式是否符合标准,包括正确的域名、路径和安全性标志。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部