安卓studio代码里面如何允许网页中Access-Control-Allow-Origin 头信息以允许跨域访问
时间: 2023-07-18 16:23:54 浏览: 135
如果你要在 Android Studio 中的 WebView 中加载网页并允许跨域访问,可以通过设置 WebView 的 WebSettings 来实现。具体实现可以参考以下代码:
```java
WebView webView = findViewById(R.id.webview);
// 获取 WebSettings 对象
WebSettings webSettings = webView.getSettings();
// 允许使用 JavaScript
webSettings.setJavaScriptEnabled(true);
// 允许跨域访问
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setAllowFileAccessFromFileURLs(true);
```
以上代码中,我们通过 `setJavaScriptEnabled` 方法开启了 JavaScript 功能,通过 `setAllowUniversalAccessFromFileURLs` 和 `setAllowFileAccessFromFileURLs` 方法允许了跨域访问。
如果你要加载的网页需要使用 AJAX 等跨域访问的技术,还需要在网页的响应头中添加 `Access-Control-Allow-Origin` 字段,允许跨域访问。具体实现可以参考以下代码:
```java
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 在网页加载完成后,通过 evaluateJavascript 方法注入 JavaScript 代码,修改响应头
webView.evaluateJavascript("javascript: document.getElementsByTagName('head')[0].innerHTML += '<meta http-equiv=\"Access-Control-Allow-Origin\" content=\"*\">';", null);
}
});
```
以上代码中,我们通过 `WebViewClient` 的 `onPageFinished` 方法,在网页加载完成后使用 `evaluateJavascript` 方法注入 JavaScript 代码,向响应头中添加 `Access-Control-Allow-Origin` 字段,允许跨域访问。
需要注意的是,为了保证安全性,最好只允许指定域名进行跨域访问,而不是允许所有域名。
阅读全文