代码之家  ›  专栏  ›  技术社区  ›  TechZen

uiwebview:你能禁用javascript吗?

  •  13
  • TechZen  · 技术社区  · 14 年前

    您可以在MobileSafari和Cocoa的WebView中禁用javascript,但在 UIWebView .

    我说的对吗?

    我就这个问题问 regarding obtaining the title of page displayed in an UIWebView 使用javascript。我担心如果禁用javascript,它会失败,但API似乎不允许禁用javascript。

    如果不能停用javascript UIWebVIEW 这使我以前的问题变得毫无意义。

    2 回复  |  直到 8 年前
        1
  •  9
  •   Stefan Arentz    14 年前

    没有要禁用javascript的公共API。所以假设它不会被禁用是相当安全的。

        2
  •  13
  •   BadPirate    11 年前

    有办法!使用 Content Security Policy iOS 5.1及更高版本部分支持,以及自定义头段:

    X-WebKit-CSP: script-src none;
    

    您可以告诉uiwebkit不允许在页面上完全使用javascript。(或有选择地只允许来自特定域的脚本 spec .

    要从您控制的服务器执行此操作,您必须修改页面的响应头以包含x-webkit-csp头…要从本地页面(设备上的纯文本或HTML数据)执行此操作,您必须定义并注册用于加载页面的自定义nsurlprotocol,并在精心设计的nshtpurlresponse中发送标题:

    NSDictionary *headers = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"script-src none",@"X-WebKit-CSP",
                             @"text/html",@"Content-type",
                             encoding,@"Content-encoding",
                             nil];
    NSHTTPURLResponse *urlResponse = [[NSHTTPURLResponse alloc] initWithURL:self.request.URL
                                                             statusCode:200
                                                            HTTPVersion:@"1.1"
                                                           headerFields:headers];
    [self.client URLProtocol:self didReceiveResponse:urlResponse cacheStoragePolicy:NSURLCacheStorageAllowedInMemoryOnly];