webview 加载本地(file:///)html,Jquery ajax http请求携带cookie

它是这样的APP,前端页面是加载的assets里面的html文件,然后html文件里写了jquery ajax的http请求,本以为从服务端获取到jsessionid,就成功了一大步,没想到这才是失败的开始,app端写在html中的的http请求根本就设置不了请求头里的cookie,格外桑心。

贴一下“未成功”的尝试,如果有朋友有什么好的建议,感谢在下方留言:

尝试1、通过在ajax请求中增加如下代码:

headers:{'cookie':localStorage.getItem('cookie').replace(/\"/g, "")},

尝试2、通过android后台设置cookie,在本地file中发起http请求,同样未携带cookie:

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie("http://...","1234567890");

失败原因:W3C禁止开发者手动设置请求头中的某些参数,包括cookie(设置后安卓后台报错:Refused to set unsafe header “cookie”);Google Chrome只支持在线网站的cookie的读写操作,对本地html(file方式访问的)的cookie操作是禁止的(网上看到webview用的内核好像和chrome的内核关系很大)。


由于以上原因,博主还在找寻突破口,看能不能携带上cookie,确实不能只有另辟蹊径了。

再而想到:如果不携带上cookie,项目后天设置的session是不过期的,那么APP每调一次web服务端的接口,都会生成一个session保存在服务器,这也需要处理,否则早晚会炸。

今天已经搞得头皮发麻,晚上跟同事交流了一下,采用下面的方式解决了:

曲线救国:将app本地的html页面放在了服务器上,webView.loadUrl(填写服务器上html的路径),然后通过前台js保存服务端返回的JSESSIONID到cookie,或者通过android后台设置webview的cookie都能行的通。


177 Clicks !

发表评论

电子邮件地址不会被公开。