设置登录MacOSX WebView 对 iframe 设置cookie 有可能失败
时间紧张,先记一笔,后续优化与完善。
在应用 WebView 实现用户登录,结果死活登录不成功,Safari 则完全没问题,对此表现很无法,开始疑惑是否WebView 哪里设置的问题,但没找到依据。还好友人提醒抓包尝尝,由于Mac 下没有找到Fiddler ,于是实验应用 CharlesProxy 结果适用版非常恼人,而且开vpn 可能就什么都抓不到。还好有个Wireshark 有Mac 版本的,虽然开始不会用,但是之后发现功能的确很壮大。
经过抓包最后发现虽然发的请求同应用Safari 基本相同,但是其中少了cookie,渐渐磨下去发现由于自己的登录页实际上是在本地页面的 iframe 中。接着找到如果 iframe src 相对main frame url 不是相同的domain 可能被认为是 third-part cookies,因此在接收登录页面的时候cookie 就有可能没权限设置或在请求时没有不发送cookie。最后通过设置cookie 的信任级别处理了问题。
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy: NSHTTPCookieAcceptPolicyAlways];
虽说这处理了问题,但一个这种方式也有些无法,因为文档提到这会影响到全部应用程序对cookie处理方式 ,感觉有更好的方式,仍需要继续寻觅。
参考:
文章结束给大家分享下程序员的一些笑话语录:
据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”
---------------------------------
原创文章 By
设置和登录
---------------------------------