.net 3.5 mvc2 Web アプリケーションにセキュリティを適用しています。私の Web サイトにはユーザー認証が含まれておらず、.js ファイル内の多数の ajax 呼び出しで構成されています
私が書いた.aspxファイルに
<%= Html.AntiForgeryToken() %>
私の.jsファイル関数で私が書いた
$(document).ready(function() {
var token = $('input[name=__RequestVerificationToken]').val();
$.ajax({
url: "/Home/getCurrentLanguage/" + Math.random(),
cache: false,
type: "POST",
async: false,
data: {"__RequestVerificationToken":token},
success: function(data) {
if (data == "mr") {
alert("its Marathi");
} else {
alert("its English huh !!!");
}
return false;
},
error: function(data) {
alert("some Error" + data);
}
});
});
私のコントローラーで私が書いた
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public JsonResult getCurrentLanguage(string id)
{
return new JsonResult
{
Data = "mr"
};
}
これは私にとってはうまくいきますが、
Q1 で 2 つの質問があります。それは正しいアプローチですか?ページのソースを見ると、このコードが見つかりました
<input name="__RequestVerificationToken" type="hidden" value="WFd+q5Mz0K4RHP7zrz+gsloXpr8ju8taxPJmrLO7kbPVYST9zzJZenNHBZqgamPE1KESEj5R0PbNA2c64o83Ao8w8z5JzwCo3zJKOKEQQHg8qSzClLdbkSIkAbfCF5R6BnT8gA==" />
しかし、外部 html ファイルを作成し、__RequestVerificationToken のこの値をコピーして ajax 呼び出しを渡すと、このエラーが発生します
。必要な偽造防止トークンが提供されなかったか、無効でした。
次に
Q2。ランタイムは、このページがコピーされた __RequestVerificationToken を提供していることをどのように認識しますか?