【发布时间】:2014-05-06 19:51:24
【问题描述】:
服务器:在 Heroku 上运行的 Django 1.4。所有请求都是 HTTPS。
我的 ajax 调用如下所示:
var data = {
username: form.find('input[name="username"]').val(),
email: form.find('input[name="email"]').val()
};
$.ajax({
url: '/register',
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
dataType: 'text',
headers: {
'X-CSRFToken': $.cookie('csrftoken')
}
});
有时,在服务器上解析请求正文会失败,因为request.body 完全为空。这是相当罕见的,但由于我在很多页面上使用这个成语,我每周都会看到几次。大概占这些请求的 2-5%。
CSRF 令牌标头与其余部分一起存在,因此似乎只有主体本身丢失了。在最近的一个请求中,我还注意到一个 CONTENT_LENGTH 2 标头,它太短而无法包含真实的请求数据。我想知道它是在哪里添加的。
我希望得到一些帮助来调试它。我看不到 JSON.stringify 调用返回空字符串的任何方法。这合理吗?如果是这样,那么它必须是请求正文要么在飞行中被剥离,要么我的 Django 应用程序中的某些东西正在这样做。
非常欢迎任何关于如何重现此问题的帮助调试或想法。
【问题讨论】:
-
您在 javascript 中出现错误,在第二个 val 后缺少
)
标签: jquery ajax json django heroku