3

JavaScript関数内でRequest.QueryStringを呼び出す方法と、私はasp.netとC#を使用しています

var str=<%=Request.quesryString("val")%>

しかし、それは私にエラーを与えています

4

7 に答える 7

8

この JavaScript コードが Web フォームにインラインである場合、正しい方法は次のように使用することjavascript serializerです。

<script type="text/javascript">
    var str = <%= new JavaScriptSerializer().Serialize(Request.QueryString["val"]) %>;
    alert(str);
</script>

次のことは絶対に行わないでください。完全に安全ではなく、サイトは XSS インジェクション攻撃に対して脆弱です。

<script type="text/javascript">
    var str = '<%= Request.QueryString["val"] %>';
    alert(str);
</script>
于 2013-03-28T10:51:40.280 に答える
0

ASP NET の要求でセキュリティのテーマを活用する...

JavaScriptStringEncode()またはAntiXSS ライブラリを使用して、Web サイトで XSS を防止することもできます。

于 2013-03-28T11:24:33.890 に答える
-1

簡単な答え: できません。ブロック内のコード<%= %>はサーバー側で評価され、JavaScript コードはクライアント側で評価されます。

長い答え: インライン C# コードを使用して JavaScript コードを生成できます。ただし、これは JavaScipt 関数から C# コードを呼び出すことと同じではありません。もちろん、これは .js ファイルではなく .aspx / .cshtml などのファイルでのみ実行できます。これらはコンテンツとしてのみ処理され、ASP.NET によって解析されないためです。

[編集]とにかくJSを介してクエリ文字列を取得できるため、とにかく気にする必要はありません。 JavaScriptでクエリ文字列値を取得するにはどうすればよいですか? を参照してください。

[EDIT2]: もちろん、JavaScriptSerializer に関する他の回答は、安全性に関して絶対に正しいです。Razor ビュー エンジンを使用すると、既定で文字列がエスケープされるため、作業がはるかに簡単かつ安全になります。しかし、私が言ったように、具体的なケースでは、どちらの方法でも気にする必要はありません.

于 2013-03-28T10:47:02.753 に答える