为啥 iOS UIWebView Video 不发送 cookie?

Posted

技术标签:

【中文标题】为啥 iOS UIWebView Video 不发送 cookie?【英文标题】:Why iOS UIWebView Video doesn't send cookie?为什么 iOS UIWebView Video 不发送 cookie? 【发布时间】:2014-11-21 10:47:23 【问题描述】:

我有一个 UIWebView,并从我的网站加载一个 html 页面:

- (void) viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    [webView loadRequest:nsUrlRequest];

然后我想从 webview 加载一些图像/视频:

- (void)webViewDidFinishLoad:(UIWebView *)myView

        // this line I got video url
        NSString* videoUrl = XXXXX;

         // cookie is all right in the page
         [myView stringByEvaluatingjavascriptFromString:@"alert(document.cookie)"];

        // image load request is correct with cookie
        [myView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.createElement('img').src='/Images/logo.png'"]];

        // but video request no cookie !!!!!
        [myView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"var video = document.createElement('video');video.src = '%@';video.autoPlay = true;", videoUrl]];


请帮帮我!!救救我!!!

【问题讨论】:

【参考方案1】:

确保您已为 iPhone 中的 web 视图启用 cookie 尝试使用:

[NSHTTPCookieStorage sharedHTTPCookieStorage].cookieAcceptPolicy = 
    NSHTTPCookieAcceptPolicyAlways;

要发送 cookie,请查看此堆栈链接:https://***.com/a/21253352/2098690

【讨论】:

cookie 在 webview 中没问题,只是没有和视频请求一起发送,但是图像请求没问题.... 我已经添加了 NSHTTPCookieAcceptPolicyAlways @ArielZhang 试试这个NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies: cookies]; [request setAllHTTPHeaderFields:headers]; 我如何获得请求?实际上,在我通过javascript设置视频的src后,视频的请求是自动调用服务器的。 我在 osx 的 webview 中看到了同样的问题。你找到解决办法了吗?

以上是关于为啥 iOS UIWebView Video 不发送 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如果无法访问 UIWebView 的运行时,为啥要在 iOS7 中使用 JavaScriptCore?

为啥在创建 UIWebView 后清除 NSUserDefaults 会导致 EXC_CRASH?

iPhone UIWebView/Safari.app iOS 4 视频/电影 - 服务器问题?

UI11上的UIWebView / WKWebView崩溃(用完可执行内存)

MPMoviePlayerViewController 和 UIWebView HTML5 视频

如何使 gif 在 UIWebView 中永不停止?