0

jqueryを使用して自分のサーバー(Javaサーブレット)にPOSTリクエストを送信するJavaScriptメソッドがあります。応答は、次のタグを含む HTML ページです。

<meta http-equiv="X-FRAME-Options" content="SameOrigin">

このページは、既存のページの iframe に表示されます。jquery メソッドは次のようになります。

function ajaxCall(urlString, params){
    $.ajax({
        type: "POST",
        dataType:'html',
        url: urlString ,
        data: params,
        success: function(msg){
            $("#A1B2C3D4E5").contents().find('html').html(msg);
        },
        failure:  function(msg) {
            $("#A1B2C3D4E5").contents().find('html').html(msg);
        }
    });
}

ID A1B2C3D4E5 を持つ HTML コンポーネントは iframe です。問題は、返された html ページが Chrome の iframe に表示されないことです。それが与えるエラーメッセージは次のとおりです。

Refused to display 'about:blank' in a frame because it set 'X-Frame-Options' to 'SameOrigin'. jquery-1.7.2.min.js:32
Blocked a frame with origin "https://localhost:8443" from accessing a frame with origin "null".  The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "data". Protocols must match.

Firefox では正常に動作しますが、Chrome では動作しません。

次のメタ セクションを削除します。

<meta http-equiv="X-FRAME-Options" content="SameOrigin">

Chromeでも問題なく動作します。しかし、何らかの理由でこのタグを削除できません。

私の質問は、なぜこれが起こるのですか?とにかくそれを修正してメタタグを保持する方法はありますか?

どうもありがとう。

4

1 に答える 1

0

このメタ タグは、「SameOrigin」が指定されている場合に、別の Web サイトの iframe 内にページが表示されないようにするために使用されます。

受信した Web ページは、iframe を含む Web ページからではなく、POST を介した Ajax 呼び出しからのものです。この場合、同一産地ではなく異産地に分類されます。

したがって、jquery ajax 呼び出しで要求されたページは、メタ タグに「SameOrigin」値が指定されている場合、ホスティング ページの iframe 内に表示できません。

于 2013-08-23T14:05:39.023 に答える