[解決済み] ASP.NET MVCのAjaxポストでantiforgerytokenを含める。
2022-04-13 06:32:44
質問
ajaxでAntiForgeryTokenを使用する際に問題があります。ASP.NET MVC 3を使用しています。私は、以下の解決策を試みました。 jQuery Ajaxの呼び出しと、Html.AntiForgeryToken() . その解決策を使用すると、トークンが渡されるようになりました。
var data = { ... } // with token, key is '__RequestVerificationToken'
$.ajax({
type: "POST",
data: data,
datatype: "json",
traditional: true,
contentType: "application/json; charset=utf-8",
url: myURL,
success: function (response) {
...
},
error: function (response) {
...
}
});
を削除すると
[ValidateAntiForgeryToken]
属性は、データ (トークン付き) がコントローラへのパラメータとして渡されているかどうかを確認するためだけに使用します。しかし、何らかの理由で
A required anti-forgery token was not supplied or was invalid.
のメッセージは、属性を戻してもまだポップアップします。
何か思い当たることはありますか?
EDIT
antiforgerytokenはフォーム内に生成されていますが、submitアクションを使用して送信していません。代わりに、jqueryを使用してトークンの値を取得し、それをajaxポストしようとしています。
ここにトークンを含むフォームがあり、マスターページのトップに位置しています。
<form id="__AjaxAntiForgeryForm" action="#" method="post">
@Html.AntiForgeryToken()
</form>
解決方法は?
の指定が正しくありません。
contentType
から
application/json
.
以下は、その例です。
コントローラーです。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(string someValue)
{
return Json(new { someValue = someValue });
}
}
表示します。
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "__AjaxAntiForgeryForm" }))
{
@Html.AntiForgeryToken()
}
<div id="myDiv" data-url="@Url.Action("Index", "Home")">
Click me to send an AJAX request to a controller action
decorated with the [ValidateAntiForgeryToken] attribute
</div>
<script type="text/javascript">
$('#myDiv').submit(function () {
var form = $('#__AjaxAntiForgeryForm');
var token = $('input[name="__RequestVerificationToken"]', form).val();
$.ajax({
url: $(this).data('url'),
type: 'POST',
data: {
__RequestVerificationToken: token,
someValue: 'some value'
},
success: function (result) {
alert(result.someValue);
}
});
return false;
});
</script>
関連
-
ASP.NET Core MVC Dependency Injection ビューとコントローラ
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ajaxポストからのファイルダウンロードを処理する
-
[解決済み] Ajaxを使用して1つのフォームでデータとファイルの両方をアップロードする?
-
[解決済み】PHPによるjQuery Ajax POSTの例
-
[解決済み] [Solved] Jquery - $.post()でcontentType=application/jsonを使用するようにするには?
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み] inheritInChildApplicationsを使用して子Webアプリケーションでweb.configの継承を回避する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.NET 6:.NETのロギングコンポーネントlog4netを使用する。
-
ASP.NET CoreでURLを設定する5つの方法
-
NET 6 の今後の新機能 暗黙の名前空間参照
-
ajaxでポップアップアラートボックス
-
ASP.NETでのRadioButton(ラジオボタン)の使用について
-
ConfigurationManagerのGetSection()メソッドです。
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み] ポストバック時に「オブジェクトの現在の状態により操作が有効でない」エラーが発生する
-
[解決済み] ASP.NET MVCのHtml.ActionLinkに "active "クラスを追加する方法