django - Django 开发服务器不一致地处理相同的 Ajax 请求
问题描述
我正在使用 ajax 客户端提交 POST。只要所有请求都有效,它就可以正常工作。但是,当我向无效的 URL 发送 POST 请求,然后用另一个 POST 请求跟进它时,无论它是否有效,Django 都会以完全不同的方式处理请求。在更改某些代码之前,它实际上导致服务器崩溃。
当我连续发送两个无效请求时,Django 服务器标准输出会发生以下情况:
Not Found: /profile/add_favorite
[01/Aug/2019 15:42:25] "POST /profile/add_favorite HTTP/1.1" 404 4132
Not Found: /profile/add_favorite
[01/Aug/2019 15:42:30] "title=Video+TitlePOST /profile/add_favorite HTTP/1.1" 404 4178
第二个请求看起来格式不正确,并且与前一个请求的格式不同。
请求是使用基本 Ajax 发送的:
var conf = {
type: 'POST',
url: url,
data: {title: "Video Title"},
headers: {'X-CSRFToken': csrftoken},
}
$.ajax(conf)
在开发工具中,我检查了请求是否相同:
这只是标题,但数据也是相同的。无论如何,两个请求都使用了完全相同的代码。这只发生在我向无效 URL 发送请求,然后在其后发送另一个请求时,如果我在发送无效请求后重新加载页面并发送另一个请求,该请求将正常工作,但不会返回一个混乱首先回应。
看哪:如果我向一个无效的 URL 发送一个 post 请求,然后在 Chrome chrome 中重新加载页面将不会发送一个有效的 GET 请求,而是发送一个带有相同前置标题、相同无效格式的请求!
[01/Aug/2019 16:04:03] "title=Video TitleGET / HTTP/1.1" 403 2513
那么问题就来了:每当我从浏览器发送一个无效的 url Ajax 请求时,对我的服务器的下一个请求将以同样的方式变为无效。我确信这不是浏览器端的问题,因为我可以从一个窗口发送不正确的请求,然后来自不同窗口的下一个请求将不正确!这是下一个请求的屏幕:
CSRF 令牌甚至在第一次加载站点时都无关紧要,这使得该消息毫无意义。
对于我的服务器来说,这显然是一个令人难以置信的严重问题,因为任何时候有人向我服务器上的无效 URL 发送请求,下一个请求将无法正确处理。
这一定是 Django 开发服务器的错误?什么可能导致这种情况?
解决方案
推荐阅读
- javascript - 我正在尝试使用 next.js 转换我现有的反应应用程序。这是正确的做法吗?
- sql - SQL Select 问题:如何拆分列值
- php - 如果我们有多个数据库和连接,如何加载学说夹具
- react-native - 请看一下这段代码我的注册按钮不会指示我配置组件反应原生
- azure - Azure 数据工厂使用 XML 源复制数据
- powershell - PowerShell 中的变量 '
- java - 浏览器和 Postman 不解码 Content-Disposition 标头中的 UTF-8 文件名
- python - 从字符串中删除特定句子
- swift - 收入猫用户没有资格执行该操作。& 用户没有资格获得促销优惠
- python - for循环pandas内的连接 - 只为列表中的最后一个元素写出变量