UIWebView:你能禁用Javascript吗?

UIWebView:你能禁用Javascript吗?,javascript,iphone,uiwebview,Javascript,Iphone,Uiwebview,您可以在MobileSafari和Cocoa的WebView中禁用Javascript,但在UIWebView中我看不到这样做的方法 我说得对吗 关于这个问题,我使用Javascript提问。我曾担心如果禁用Javascript会失败,但API似乎不允许禁用Javascript 如果无法停用JavascriptUIWebView,那么我前面的问题就没有意义了 没有禁用Javascript的公共API。因此,假设它不会被禁用是相当安全的。有一种方法!使用iOS 5.1及更高版本部分支持的以及自定义

您可以在MobileSafari和Cocoa的WebView中禁用Javascript,但在
UIWebView
中我看不到这样做的方法

我说得对吗

关于这个问题,我使用Javascript提问。我曾担心如果禁用Javascript会失败,但API似乎不允许禁用Javascript


如果无法停用Javascript
UIWebView
,那么我前面的问题就没有意义了

没有禁用Javascript的公共API。因此,假设它不会被禁用是相当安全的。

有一种方法!使用iOS 5.1及更高版本部分支持的以及自定义标头:

X-WebKit-CSP: script-src none;
您可以告诉UIWebKit完全不允许页面上使用javascript。(或者有选择地只允许来自特定域的脚本,在

要从您控制的服务器执行此操作,您必须修改页面的响应标头以包含X-WebKit-CSP标头…要从本地页面(设备上的纯文本或HTML数据)执行此操作,您必须定义并注册自定义NSURL协议以加载页面,并在特制的NSHTTPURLRResponse中发送标头:

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];

遗憾的是,这个函数不适用于iFrame。@AlexanderSmirnov——如果您使用自定义的NSURLProtocol处理程序来处理iFrame——您将必须捕获所有出站调用(使用UIWebView中的委托回调来确保每当进行URL调用时,它都会将您的模式交换为http或https)@BadPirate你能给我提供更多的代码吗?我不明白在加载带有
loadHtmlString:baseURL:
的html字符串时如何防止XSS。感谢如果你使用新的WKWebView而不是UIWebView,有一种方法可以做到这一点。这在这里得到了回答。对于iOS 8及以上版本(根据删除的评论):“如果您使用新的WKWebView而不是UIWebView,有一种方法可以做到这一点。答案如下。”