我正在使用“jQuery”(前端)和“Python”(后端)开发Web应用程序。在发出PUT请求以更新数据库中的详细信息时,这是我在控制台中遇到的错误:
选项“REST API URL”net :: ERR_CONNECTION_REFUSED
我的jQuery代码是:
$.ajax({
type: "PUT",
url: "REST API URL",
headers: {"Content-Type": "application/json", "Authorization": AuthToken},
data: "details to be updated in database",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data,status) {
//do something with data
},
error: function(data,status) {
//show error data and status
}
)};
我读到有关GET
和POST
以外的HTTP请求首先作为OPTIONS请求进行预先处理的情况,并且仅当它是真正的请求时才会被处理为PUT/DELETE/PATCH
请求。
我看到解决方案说它可能是CORS
问题,但CORS
已启用来自后端以允许GET/POST/PUT/PATCH/DELETE
请求。此外,我成功地发出了GET
和POST
个请求,但没有PUT
个请求正在通过。
我正在使用“Chrome开发工具”,并通过清除缓存和Cookie,刷新DNS并重新安装Chrome来研究如何修复Chrome的此错误,但目前尚未解决任何问题。
我正在制作前端UI,我不确定这是客户端错误还是服务器端错误?
任何帮助将不胜感激。
答案 0 :(得分:4)
有一件事是肯定的,这是一个后端问题。当后端和前端之间的交叉原始通信未正确连接时会发生这种情况。考虑到您已经导入了cors并设置了中间件,很可能您在原始URL和请求URL方面使用PUT方法时出错了。
你可以做的事情:
1)确保两台服务器都在运行(后端和前端)。
2)查看Google开发工具并查看网络部分。查看请求标头和常规。确保请求网址/后端包含您的后端服务器网址,而 orgin / frontend 包含您的前端网址。
3)确保在http.put()方法中,您提供的域与您在服务器中设置的API相匹配。
4)您的问题是您的后端未正确连接前端,因此请不要浪费时间尝试查找其他错误。专注于对http.put()方法以及您导入的cors模块和中间件进行调试。
答案 1 :(得分:1)
鉴于它确实是一个CORS问题 - 浏览器使用OPTIONS方法预检“请求”。在OPTIONS请求成功之后,实际请求(在您的情况下为PUT)。
确保后端响应OPTION请求。您可以轻松捕获所有OPTION请求并返回200 OK
或204 NO CONTENT
。