【发布时间】:2019-01-29 11:54:19
【问题描述】:
是否可以有没有表格的防伪令牌?我有一个需要防伪令牌的 ajax 后调用。然而,我见过的大多数例子都是要求表格。这是我目前所拥有的:
<script>
$(document).ready(function () {
var SessionId = document.getElementById("Id").value;
var form_data = {
"SessionId": SessionId
};
$.ajax({
url: "@Url.Action("GetHistory", @ViewContext.RouteData.Values["controller"].ToString())",
method: "POST",
data: JSON.stringify(form_data),
contentType: "application/json",
success: function (result) {
console.log(result);
var output = JSON.parse(result);
for (var i = 0; i < output.length; i++) {
var p = document.createElement("span");
var q = document.createElement("li");
if (output[i].Mine == true) {
p.setAttribute("class", "Sender Me");
q.setAttribute("class", "Message");
} else {
p.setAttribute("class", "Sender");
q.setAttribute("class", "Message");
}
p.textContent = output[i].Name + " - " + moment(output[i].CreatedOn).format("DD-MM-YYYY HH:mm:ss");
q.textContent = output[i].Message;
document.getElementById("MessageList").appendChild(p);
document.getElementById("MessageList").appendChild(q);
}
},
error: function (error) {
console.log(error);
}
});
$('#MessageList').stop().animate({
scrollTop: $('#MessageList')[0].scrollHeight
}, 2000);
return false;
});
</script>
这只是从一个文本框和一个未附加到表单的按钮中获取输入。
【问题讨论】:
-
这怎么可能?呈现表单时会生成防伪令牌。
-
那么,如果我在没有表单的情况下进行 ajax 调用,我的 POST 调用是否安全?
-
我不是!但您可以使用带有防伪令牌的 ajax 提交表单。
-
这在official docs 中有很好的介绍。你使用过那里详述的方法吗?
标签: javascript jquery asp.net asp.net-core