私は.NET4.0MVCプロジェクトに取り組んでいます。KOモデルのデータをAjaxに投稿しようとしています。そのデータは、次のXML形式の文字列です。
<SearchCriteria><Criteria SearchOn="Name" SearchValue="test 3" /></SearchCriteria>
このように投稿しようとしています。
$.ajax({
url: destUrl,
data: ko.toJSON(DataToPost()),
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
ここでは、送信されているデータがです"ko.toJSON(DataToPost())"
。データメンバーに含まれている文字列をDataToPost()
返します。のデータを変換するために使用されます。XML
KO model
DataToPost
ko.toJSON()
KO model
JSON
これにより、実行時例外がスローされます。これは通常、またはタグthrown
を含むものを投稿するときに発生します。これはによるセキュリティ機能です。以下は例外です。javascript
html
.NET
A potentially dangerous Request.Form value was detected from the client.
<SearchCriteria><Criteria SearchOn="...est 3\" /></SearchCriteria>
私は時々同じような状況に直面しました(私はKO
その時間を使用しておらず、それは通常の投稿、つまり非でしたがAjax
)。当時は使って問題を克服しましたjavascript
escape()
が、今回はそれfailed
です。私はそれを次のように使用しました
$.ajax({
url: destUrl,
**data: ko.toJSON(escape(SearchCriteria()))**,
type: "POST",
success: function (result) {
// I am doing my stuff here.
}
},
error: function (request, textStatus, errorThrown) {
alert(request.statusText);
}
});
その他の一般的な修正は、ページレベルまたはアプリケーションレベルでこのセキュリティを無効にすることです。それは次のように行うことができます。
ページレベル。
<%@ Page validateRequest="false" %>
アプリケーションレベル。
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
しかし、このセキュリティを廃止することは良くありません。賢明な動きではないと思います。今、私は何をすべきかわかりません。提案が必要です。
前もって感謝します!