无法使用document.cookie在UIWebview浏览器中读取cookie

Unable to read cookie in UIWebview browser with document.cookie

本文关键字:cookie UIWebview 浏览器 读取 document      更新时间:2023-09-26

我有一个iOS应用程序,我正在Web视图中加载html内容。html是一个登录页面,其中用户凭证通过ajax发送到服务器,并接收验证成功/失败响应。现在,响应包含一个cookie(在Set-Cookie头字段中),我可以在Objective-C端捕获它,比如

NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields]; 
NSString *strCookies = [headers valueForKey:@"Set-Cookie"]; 
NSLog(@"cookies -> %@", strCookies);

相同的响应还包含我在浏览器中使用的responseText

Ajax("/login", "POST", { onsuccess : function(response){ 
       /* Do HTML stuff with response */ }  
});

现在我需要cookie来进行进一步的ajax请求(在登录页面之后)。但是,cookie并没有在webview浏览器中设置。查找document.cookie返回一个空字符串。我可以使用xhr.getAllResponseHeaders()打印所有响应标头,但无法访问xhr对象中的Set-Cookie字段。

如何在网络视图中设置cookie?或者我别无选择,只能通过Obj-C发出所有ajax请求?

您可以在发送到web视图的请求中设置cookie。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL];
[request setValue:yourCookie forHTTPHeaderField:@"Cookie"];

这可以在UIWebview委托shouldStartLoadWithRequest 中完成