3

私の Web サイトから、iframe 経由で取り込まれた別の Web サイトに HTTP GET を実行しようとしています。

Firefox では、正しい URL が正しいパラメータとともに iframe src にあることをソースで確認でき、それは機能します。

IE では、正しい URL が正しいパラメーターとともに iframe src にあることをソースで確認できますが、機能しません...

クエリ文字列の iframe を介してパラメーターを渡すことができない IE について何かありますか?

IE で iframe を更新しようとしました。IE でページと iframe を更新しようとしました。また、URL をコピーして iframe src に貼り付けてみました (入力したかのように強制的に更新します)。その iframe ウィンドウのアドレス バーに挿入します)。まだ運がない!

なぜこれが起こっているのか、またはこれを回避するための提案はありますか?

編集:このサイトには、当社のサイトとベンダーのサイトの両方へのパスワードとログイン資格情報が必要なため、これへのリンクを提供できません。私たちのサイトでテスト アカウントを作成できたとしても、ベンダー サイトで同じことを行うことができないため、テスト プロセスには何の役にも立ちません。コードに関しては、ページの読み込み時にバックエンド コードからsrcを作成し、バックエンドから src 属性を設定するだけです...

//Backend code to set src
mainIframe.Attributes["src"] = srcWeJustCreated;

//Front end iframe code
<iframe id="mainIframe" runat="server" />

編集: 問題は決して解決されませんでした。報奨金の有効期限が切れたため、回答は自動承認されました。サイトの公開が近づいたら、詳細情報とページへのリンクを添えて、この質問を再質問します。


ありがとう、
マット

4

6 に答える 6

9

デフォルトでは、IE クエリ パラメータのセキュリティ設定は Iframe でブロックされます。[インターネット オプション] の下の [セキュリティ] タブで、セキュリティ レベルを [低] に設定します。これで問題が解決した場合は、それが問題であることがわかります。サイトが外部の顧客向けである場合、セキュリティ設定を拒否することを期待するのはおそらく不合理なので、回避策を見つける必要があるかもしれません.

于 2009-07-28T22:33:17.620 に答える
1

サイトがwww.acme.comで、iframe ソースがwww.myvendor.comにあるとします。

IIRC、ほとんどのドメインレベルのセキュリティ設定はホスト名を気にしないため、myvendor.acme.comのゾーンファイルに DNS CNAME を追加し、 www.myvendor.comを指すようにします。次に、IFRAME で、ホスト名エイリアスを使用してソースを設定します。

別の解決策として、Javascript で src を独自のサーバー (つまり、ドメイン内)のリダイレクタ スクリプトに設定することが考えられます。スクリプトは、同じパラメーターを使用して IFRAME を「正しい」URL にリダイレクトするだけです。

于 2009-07-31T15:58:26.297 に答える
0

必要に応じて、フラグメント識別子を使用してサイト間で通信できます。ここで記事を見つけることができます:http://tagneto.blogspot.com/2006/06/cross-domain-frame-communication-with.html

于 2009-08-03T12:15:20.510 に答える
0

マイクの答えに基づいて、あなたの場合の最も簡単な解決策は、「パラメーターの非表示」を使用して、すべての GET パラメーターを単一の URL に変換することです。

最もスケーラブルな方法は、URL 内の各「フォルダー」をパラメーター、カンマ、値で構成することです。たとえば、アプリで次の URL を使用します。

http://example.com/app/param,value/otherparam,othervalue http://example.com/app/param,value/thirdparam,value3

これらと同等のものは次のとおりです。

http://example.com/app?param=value&otherparam=othervalue http://example.com/app?param=value&thirdparam=value3

これは .htaccess を使用した Apache では非常に簡単ですが、IIS を使用しているように見えるので、正確な実装の調査はあなたに任せます。

編集:これに戻って、所有していない場合、別のドメインで上記を実装することはできないことに気付きました:pただし、次のようにサーバー側で実行できます:

  • 上記のパラメーター非表示を独自のサーバーに特別なスクリプトとして設定します (IE が同じサーバーからの GET を気にしない場合は必要ないかもしれません)。
  • Javascript で、さまざまなパラメーターから静的に見える URL を作成します。
  • サーバー上のスクリプトでパラメーターを使用し、外部 URL を読み取って出力します。つまり、サーバー側のコンテンツを取得します。この質問はそれを助けるかもしれません。

したがって、iframe URL は次のようになります。

http://yoursite.com/app/param,value/otherparam,othervalue

そして、そのページは URL を読み取って表示します。

http://externalsite.com/app?param=value&otherparam=othervalue

于 2009-07-31T15:12:30.547 に答える
0

BYKが言ったこと。IE が処理するには大きすぎる URL を取得していると思います。src という名前の変数を送信しようとしていることがわかりました。これはおそらく非常に長く、4k を超えています。以前にこの問題に遭遇しましたが、これが私のコードでした。IE に関するコメントに注意してください。また、別のコメントで対処されている Firefox で問題が発生することにも注意してください。

var autoSaveFrame = window.frames['autosave'];
// try to create a temp form object to submit via post, as sending the browser to a very very long URL causes problems for the server and in IE with GET requests.
var host = document.location.host;
var protocol = document.location.protocol;
// Create a form
var f = autoSaveFrame.document.createElement("form");
// Add it to the document body
autoSaveFrame.document.body.appendChild(f);
// Add action and method attributes
f.action = protocol + '//' + host + "/autosave.php"; // firefox requires a COMPLETE url for some reason! Less a cryptic error results!
f.method = "POST"
var postInput = autoSaveFrame.document.createElement('input');
postInput.type = 'text'
postInput.name = 'post';    
postInput.value = post;
f.appendChild(postInput);
//alert(f.elements['post'].value.length);
// Call the form's submit method
f.submit();
于 2009-08-03T13:12:17.080 に答える
-1

間接的な方法を使用してみてください。フォームを作成します。アクション パラメーターを、ナビゲートするベース URL に設定します。メソッドを POST に設定します。そのターゲットを iframe に設定し、必要なパラメーターを非表示の入力として作成します。最後に、フォームを送信します。POSTで動作するため、動作するはずです。

于 2009-07-29T19:26:05.610 に答える