我有一个iOS应用程序,我在webview中加载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请求?
答案 0 :(得分:2)
您可以在发送到webview的请求中设置cookie。
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL];
[request setValue:yourCookie forHTTPHeaderField:@"Cookie"];
这可以在UIWebview委托shouldStartLoadWithRequest
中完成