我有一个带有webview的Swift项目,它提供来自本地文件夹vai GCDwebserver的文件,但是该网站被设计为单页面应用程序,有没有什么方法可以重写所有对index.html的URL请求?
我目前正在使用GCDwebserver,但我愿意更改服务器以在Web视图中加载SPA。
使用nginx,我会做像
这样的事情server {
listen 8080;
listen [::] 8080;
root /root/bundled;
location / {
try_files $uri $uri/ /index.html;
}
}
如何在osx中对webview获得相同的重写效果?
答案 0 :(得分:1)
只需使用默认处理程序即可捕获所有GET请求:
- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
如果你想做更多花哨的匹配,还是一个正则表达式:
- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block
甚至一直到匹配区:
- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
答案 1 :(得分:0)
我必须承认我从未使用过GCDWebserver,但如果您在iOS应用中有任何要求重定向网址,则可以使用NSURLProtocol。您可以在此处详细了解https://www.raywenderlich.com/76735/using-nsurlprotocol-swift。一旦你阅读了链接,你基本上需要使用方法canonicalRequestForRequest来捕获当前请求并返回一个新请求。希望有所帮助。