做混合开发APP的时候,我们的方案是内置了H5相关的dist包,以本地文件的方式用WebView进行加载。
期间遇到了Webview的安全相关的几个坑点。
1. JS同源策略与跨域访问
同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。
何谓同源:
URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。
同源策略:
浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。
从一个域上加载的脚本不允许访问另外一个域的文档属性。
由于我们的H5是本地加载的,Ajax要访问远程的服务端接口提供功能,那么属于跨域请求了。那么需要对WebView进行设置。
Android:
WebSettings settings = webView.getSettings();
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
iOS:
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.preferences = [[WKPreferences alloc] init];
[config.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
i
HyBird混合开发的几个注意的地方
最新推荐文章于 2021-05-26 03:36:59 发布