我有一个 iframe 到第 3 方网页的网站,该网页本身嵌入到 iOS 应用程序的 WkWebView 中。 Mobile Safari 和 WkWebView 拒绝为我的网站发送的 session (仅限 http)cookie,基本上破坏了一切。移动版 Safari 中的解决方法是要么在设置中启用所有 cookie(糟糕),要么指示用户直接访问我的网站(因此就 Safari 而言,它算作“我访问过的网站”);这些都不是特别可口。我没有发现 WkWebView 的解决方法。
这个问题分为两部分:
1) 我正在考虑在我的网站中实现重定向服务,该服务将目标 URL 作为参数,并在页面加载时将用户重定向到该 URL。然后,第 3 方站点可以链接到我的重定向页面,其 URL 设置为立即将用户发回,希望这将被视为“访问”我的域,从而能够加载 cookie。
或者,第 3 方网站可以为我的网站打开一个新选项卡,该选项卡在加载时立即关闭。然而,我预计这将是一种不太理想的用户体验,因此我宁愿不走这条路。
最重要的是“发布到隐藏的 iframe”技巧(第 3 方页面在隐藏的 iframe 中发布到我的域),但 SO 问题表明该技巧不再有效。
这些是可行的解决方案,还是 Apple 也阻止了这些获取 session cookie 设置的方法?有没有我没有考虑过的更好的解决方案?
2) 有没有办法像 UiWebViews 那样用 WkWebViews 设置 cookie 接受策略?我对 StackOverflow 的搜索表明没有,但我阅读的答案可能基于旧版本的 iOS(该应用程序需要 iOS 9+)。
如果 WkWebViews 没有应用程序代码解决方案,移动 Safari 的解决方案是否也适用于 WkWebViews?
最佳答案
我刚刚遇到了类似的问题。我有一个 WkWebView 加载我的网络应用程序,它有一个 iframe 从特定服务器加载登录屏幕。登录页面会提示 iframe 不允许 cookie。
当我直接在 Web View 中加载登录页面时,它会正常工作,而且奇怪的是,当我随后在 iframe 中再次测试它时,它也会开始正常工作。
对此我找到的最好的解释是,只有当 Web View 至少直接加载了 iframe 的域一次时,才允许将 cookie 保存在 iframe 中。知道这一点后,我能够实现解决方法。
通过使用 webview 简单地 ping 一次登录页面,我使用 WKNavigationDelegate 等待,直到我开始从服务器接收一些数据。一旦发生这种情况,我让 WebView 加载我的包含 iframe 的页面。现在 iframe 能够持续加载登录屏幕。
关于ios - 在 WkWebView/mobile Safari 的页面中为 iframe 启用 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41941548/
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
在启用Rack::Deflater来gzip我的响应主体时偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但启用此功能后,响应被压缩,但是资源的ETag在每个请求上都会发生变化。这会强制应用程序每次都响应,而不是发送304。这在没有启用Rack::Deflater的情况下有效,我已经验证页面源没有改变。我正在运行一个使用thin作为Web服务器的Rails应用程序。Gemfile.lockhttps://gist.github.com/2510816有没有什么方法可以让我从Rack中间件获得更多的输出,这样我就可以看到发生了什么?提前致谢。 最佳答案
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.
据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b