【发布时间】:2021-03-22 11:15:25
【问题描述】:
我有一个使用 ASP.NET 的网站,需要从 CloudKit 检索一些数据。我正在使用 CloudKit JS,我正在从 CloudKit 检索记录并使用 C# 从我的 JavaScript 将数据发送到服务器。我可以使用JSON.stringify(record); 将检索到的记录的 JSON 对象转换为字符串,但我无法使用 AJAX 将其发送到服务器。这是我使用 AJAX 发送数据的代码:
function afterRecordLoaded(record) {
var decodedRecord = JSON.stringify(record);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "/receive?type=specific&" + "data=" + decodedRecord, true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send();
}
afterRecordLoaded(record);
当我在浏览器开发工具中转到控制台时,手动完成时我可以正确执行请求,但是当 AJAX 执行此操作时,它会收到 HTTP 错误 400。换句话说,我可以在键入时执行请求将 URL(具有正确参数)添加到地址栏中,但是当 AJAX 使用相同的 URL(具有相同参数)时,它不起作用并返回 HTTP 错误 400。
这是接收请求的页面的 C# 代码:
var token = antiforgery.GetAndStoreTokens(HttpContext).RequestToken;
var type = Request.Query["type"];
var data = Request.Query["data"];
if (type == "specific")
{
if (data != "")
{
PostProcessor.processPostData(data);
}
else
{
Response.StatusCode = 400;
}
}
在进行简单的 Google 搜索时,我可以看到其他人也遇到了这个问题,为了解决这个问题,他们使用了防伪令牌。如果需要,我不确定如何实施防伪令牌。如果有人有解决方案来摆脱 HTTP 错误 400,或者实施防伪令牌以使错误消失,那就太好了。对不起,如果这个问题到处都是,或者非常明显,因为我是 ASP 的初学者。谢谢。
【问题讨论】:
标签: javascript c# asp.net json ajax