dequan1331 / HybridPageKit

A high-performance、high-extensibility、easy integration framework for Hybrid content page. Support most content page types of News App.
MIT License
1.22k stars 184 forks source link

无法拦截本地js/html文件 #2

Closed GlenNorth closed 6 years ago

GlenNorth commented 6 years ago

我使用 wkwebview + NSURLProtocol 尝试拦截本地的html/js 文件以及相应的请求, 但是并没有触发 + (BOOL)canInitWithRequest:(NSURLRequest *)request 方法, 这个方法在UIWebView 里面是会触发的 ,这种情况该如何修改支持 本地(file:// )的这种请求拦截

dequan1331 commented 6 years ago

在WebKit中,有些scheme由于安全的策略不能拦截

在iOS11中,苹果开放了自定义Scheme拦截,但是也有些内置的Scheme是不可以拦截的,其中内置的猜测有一下几种 static NSString *schemes[] = { @"about", @"applewebdata", @"blob", @"data", @"file", @"ftp", @"gopher", @"http", @"https", @"javascript", @"webkit-fake-url", @"ws", @"wss",

if PLATFORM(MAC)

@"safari-extension",

endif

if ENABLE(CONTENT_FILTERING)

@"x-apple-content-filter",

endif

if USE(QUICK_LOOK)

@"x-apple-ql-id",

endif

};

基于以上的scheme验证,使用私有方法,
@"applewebdata",@"blob",@"data",@"file",@"x-apple-ql-id", 是拦截不到的