1.由於Razor Pages自帶提供防偽令牌/驗證,用來防止跨站點請求偽造(稱為XSRF或CSRF),所以和MVC框架中API使用方式有稍許的不同。
2.所以在我們使用Razor Pages中的form表單提交數據時,框架會自動幫我們生成一個隱藏的Input,並在我們提交表單時加入在請求報文頭中。
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8P-uB18ojyNBnPHyBPpQMcjMi3bb01uB9VeJk0C6GO2bVdSnt7aSGr63GOKObkLt7HBZqhVPvlmS9GLn8-To2XHw5F1L3ARqXFsXQhqpMSnuVSRBpYkZo6-7Gtv3CJrUTR6uRZdEh5ZwKsLpZSqdZEs" />
3.然而我們使用AJAX向一個post方法提交數據時,就會發現服務器端返回400狀態碼,這是因為我們在請求頭並未攜帶token過去,所以我們應該這樣寫
@Html.AntiForgeryToken() //在html頁面上生成隱藏的input,token就存放在里面,當然要是你的頁面上有form表單也就不用寫上這個
$.ajax({ method: 'post', url: "/?handler=Data", headers: { RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val() }, success: function (data) { console.log(data); }, error: function (error) { console.log(error); } })