前几天项目中用到UIWebView, 而在网页中,用到了多说评论的第三方。但是当我在手机端发表评论的时候,出现禁用第三方cookie,而安卓是没有这种情况的,于是就在找原因。找了很久也没有找到原因。一开始想到的是没有加载多说的cookie,于是打印cookie,cookie存在,这种错误原因被推翻;是不是cookie不对?尝试过重新设置cookie等等,还是不行,纠结了很久;那么是不是UIWebView和NSRequest里面的哪个属性设置允许所有的cookie,查看了所有有关这两个类的所有文档,还是没有找到解决办法。于是重新捋了一下问题,禁用第三方cookie,是不是和cookie的属性有关(原谅平常很少和cookie打交道,所以没有一开始想到这里),于是在cookie的文档里面寻找相应的属性,类的一开始便找到了这个属性。

/*!
@enum NSHTTPCookieAcceptPolicy
@abstract Values for the different cookie accept policies
@constant NSHTTPCookieAcceptPolicyAlways Accept all cookies
@constant NSHTTPCookieAcceptPolicyNever Reject all cookies
@constant NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain Accept cookies
only from the main document domain
*/
typedef NS_ENUM(NSUInteger, NSHTTPCookieAcceptPolicy) {
NSHTTPCookieAcceptPolicyAlways,
NSHTTPCookieAcceptPolicyNever,
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain
};

看到这里变豁然开朗,设置允许所有的cookie加载。

/*!
@method cookieAcceptPolicy
@abstract The cookie accept policy preference of the
receiver.
*/
@property NSHTTPCookieAcceptPolicy cookieAcceptPolicy;

设置这个属性便可以加载第三方cookie。

附上查看的链接:《iOS: Is it possible to set a cookie manually using sharedHTTPCookieStorage for a UIWebView?》

05-23 10:13