为什么 .net 核心控制器 Post 方法不接受防伪令牌?



我正在尝试使用响应式框架(在我的例子中为 Vue 3)对表单进行 API 调用来执行 POST。 我正在使用.net 6.0。 它不接受防伪请求令牌。 我把它放在请求的正文中,就像传统表单提交一样。 Javascript中的调用:

var token = $('input[name="__RequestVerificationToken"]').val();
var url = '/api/ShareAllocations';
$.ajax({
type: "POST",
url: url,
data: { fa: fa, '__RequestVerificationToken': token },
success: function (result) {
console.log(result)
},
complete: function (e) { },
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.responseText);
}
});

在 Fiddler 中,输入的文本视图如下所示:

法= ...(杰森数据) __RequestVerificationToken=CfDJ8BSiPpdXlmRFvbl4LFJ0x7iHfmWBSdPblTwBjlLUq-We2oD60dKqBCYx4dUwXG5Gxprtl3lW2zzs4K8_iBf8eu0RQqOM928ANv1-16rcqizvYhUDFC5iaDo97wpqCsdFFxlmhiRaHW1zxhmEcwpYMrpZWBnzUbjGkTa-qUSs5GfuT2MwJGEWWYqyz7D95RRJVA

API 调用返回 200,但随后网页显示 400 错误请求。 来自提琴手: 143 200 HTTPS 本地主机:7164/api/ShareAllocations 144 400 HTTPS 本地主机:7164/FarmAllocation/Manage

为了进行比较,我显示了 .net 核心中的提交正文。 对我来说,防伪令牌的键值对看起来是一样的。

SENIOR_LIVING_FACILITIES。FACILITY_ID=0&SENIOR_LIVING_FACILITIES。FACILITY_NAME=n&SENIOR_LIVING_FACILITIES。地址=&SENIOR_LIVING_FACILITIES。城市=&SENIOR_LIVING_FACILITIES。状态=我&SENIOR_LIVING_FACILITIES.ZIP=&SENIOR_LIVING_FACILITIES。CONTACT_NAME=&SENIOR_LIVING_FACILITIES。CONTACT_ROLE=&SENIOR_LIVING_FACILITIES。电话=&SENIOR_LIVING_FACILITIES。EMAIL=&__RequestVerificationToken=CfDJ8BSiPpdXlmRFvbl4LFJ0x7iHfmWBSdPblTwBjlLUq-We2oD60dKqBCYx4dUwXG5Gxprtl3lW2zzs4K8_iBf8eu0RQqOM928ANv1-16rcqizvYhUDFC5iaDo97wpqCsdFFxlmhiRaHW1zxhmEcwpYMrpZWBnzUbjGkTa-qUSs5GfuT2MwJGEWWYqyz7D95RRJVA

事实证明,该帖子运行良好。 在消息正文中传递令牌工作正常。 由于提交按钮,我有副作用,因此 400 个错误请求不相关。

相关内容

  • 没有找到相关文章

最新更新