【问题标题】:WKWebView does not send session cookieWKWebView 不发送会话 cookie
【发布时间】:2015-07-13 16:36:07
【问题描述】:

我在我的应用程序中嵌入了一个 WKWebView。它使用 PHP 会话 cookie 来识别用户。我通过以下调用获得会话 cookie:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:jsonobject options:0 error:&err]];
NSHTTPURLResponse *response = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

基于此:Can I set the cookies to be used by a WKWebView?我将cookies添加到文档中

for (NSHTTPCookie* cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies)
{
    NSString *javascript = [NSString stringWithFormat:@"document.cookie = '%@=%@';", [cookie name], [cookie value]];
    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    WKUserContentController *ucController = [[WKUserContentController alloc] init];
    WKProcessPool *processPool = [[WKProcessPool alloc] init];
    config.processPool = processPool;
    config.userContentController = ucController;
    [ucController addUserScript:[[WKUserScript  alloc] initWithSource:javascript injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]];
}

我在初始加载请求中手动设置了会话cookie:

NSMutableURLRequest *pageLoadRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
[pageLoadRequest setHTTPMethod:@"GET"];
[pageLoadRequest setHTTPShouldHandleCookies:YES];
[pageLoadRequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSHTTPCookieStorage sharedHTTPCookieStorage].cookies]];
[_webView loadRequest:pageLoadRequest];

我的问题是 AJAX 请求不会包含会话 cookie。

【问题讨论】:

  • 可能与我的回答重复here

标签: ios cookies session-cookies wkwebview


【解决方案1】:

也许您的 cookie 在 302 响应中以 Set-Cookie 的形式发送。试试这个 YWKWebView 来代替您的 WKWebView

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 2020-06-13
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2020-04-28
    相关资源
    最近更新 更多