this質問に記載されているようなテクニックを実装しようとしています。Android WebViewでXフレームオプションDENYを回避する
私はwebviewで動作するアンドロイドアプリケーション(Cordovaの上に構築されたイオニック)を持っています。基本的には、iframeにページを読み込んで、このページでいくつかの作業を行います。多くのウェブサイトでは、X-Frame-Options: DENY
ヘッダーを使用してコンテンツのiFrameへの読み込みを禁止しています。クローム拡張機能では、Webリクエストをインターセプトしてそのヘッダーを削除することで、この問題を回避できます。
shouldInterceptRequest
機能をオーバーライドしてきました
:https://developer.android.com/reference/android/webkit/WebViewClient.html
// Handle API until level 21
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
try {
WebResourceResponse cordovaResponse = super.shouldInterceptRequest(view, request);
if(cordovaResponse != null) {
return cordovaResponse;
}
String url = request.getUrl().toString();
HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
urlConnection.connect();
//view.loadUrl(url, getCustomHeaders());
WebResourceResponse response = new WebResourceResponse(urlConnection.getContentType(),
urlConnection.getContentEncoding(),
urlConnection.getInputStream());
Map<String, String> headers = response.getResponseHeaders();
if(headers != null){
response.setResponseHeaders(removeXOriginHeaders(headers));
}
return response;
} catch(MalformedURLException e) {
e.printStackTrace();
return null;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}`
が、すべてのリクエストのヘッダーには、上記の方法を使用して受信されたとき、彼らはヌルであり、コンテンツはIFRAMEに置かれたとき、それはdoesnの完全に形成されたドキュメントになります。
クロムデバッガはこのメッセージを提供します。Resource interpreted as Document but transferred with MIME type text/html;charset=UTF-8:
それは、ページのコンテンツは、XHRを使用してフェッチさのようなものだし、その後ロードとは対照的に、それは通常(すべてのスクリプトをインラインフレームを使用する場合と同様にドキュメントの単一要素内に立ち往生その後実行されるajax要求など)。
1つのヘッダーを削除した後でiframeにページコンテンツを読み込むための方法はありますか?