2022年9月23日 星期五

ASP.NET Core jQuery AJAX 回應出現400

在寫jQuery 的AJAX 的時候 response 給我400 參數也都對就是進不到controller的程式碼

上網照了一下 原來是header 少了RequestVerificationToken

如下取得RequestVerificationToken 的值 然後在AJAX的header加上RequestVerificationToken就可以了

var t = $("input[name='__RequestVerificationToken']").val();

function () {      

$.ajax

                    ({

                        url: "XXX",

                        headers:

                        {

                            "RequestVerificationToken": t

                        },

                        method: "POST",

                        data: { xxx: xxx,}

                    }

                    );

            });



然後這樣正常之後 然後 同一頁面 顯示另一個資料時竟然又出現400

用開發者工具的Network 看了一下 竟然header的token沒出現 不是一樣的程式嗎?

原來這個token是因為在Program.cs有寫了

builder.Services.AddControllersWithViews(options => {

   options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());

});

但是要有form 才會出現這個token 剛好我換一筆資料並沒有產生任何form 所以就沒有token了 找個地方加上

 <form method="post"> </form>
就正常了