2

ASP.NET Web サイトを持っています。とても巨大です!

私が行った最新の追加は、すべて JavaScript/AJAX 対応です。

サーバーからクライアントに HTML と JavaScript コードを送り返すと、クライアントは HTML を DIV に挿入し、これを使用して JavaScript を DOM に挿入します。

$('<script type="text/javascript">' + script + '</sc' + 'ript>').appendTo(document);

またはこれ:

var js = document.createElement("script");
js.setAttribute("type", "text/javascript");
js.text = script;
document.appendChild(js);

私自身の開発マシンでは、挿入された JavaScript にアクセスでき、挿入された JavaScript 関数を実行できます。

テスト環境にデプロイすると、(www.testenv.com などの内部ドメイン名があります) JavaScript エラーが発生します。

問題を小さなページに切り分けようとしましたが、そこに alert("sfdfdf"); を挿入しました。ページの下部にあり、それは正常に機能します。

これを禁止するポリシー設定はありますか?

4

2 に答える 2

5

appendChild を 'document' にしないでください。<script> はそこに行くことができず、DOM Level 1 Core 仕様に従って HIERARCHY_REQUEST_ERR DOMException を取得する必要があります。Document オブジェクトの子リストに入れることができる唯一の要素は、単一のルート documentElement、<html> です。

代わりに、<body> などのドキュメント内の要素にスクリプトを追加します。

于 2009-02-03T15:45:49.953 に答える
0

要素を動的に作成しても問題なく動作するはずです。DOM への挿入時にスクリプトが実行されます。質問に具体的に答えると、スクリプト インジェクションを禁止する直接的なポリシー設定はありませんが、動的に挿入されたスクリプト内で ajax 呼び出しを使用している場合、クロスドメインの制限が発生する可能性があります。

エラーを投稿できれば、おそらく挿入している「スクリプト」要素のソースが問題のデバッグに役立ちます:)

于 2009-02-03T15:41:33.033 に答える