main.js:295 在 Javascript 中删除 http://127.0.0.1:8081/messages/:0 405(方法不允许)
main.js:295 DELETE http://127.0.0.1:8081/messages/:0 405 (Method Not Allowed) in Javascript
我正在尝试将 JavaScript 中带有 JSON 删除请求的 restful 发送到 nodeJS 服务器以删除聊天应用程序中的消息。我试图通过请求 headers 启用 DELETE 方法,但它不起作用..
如何在此处启用 DELETE 方法?
这是客户请求:
function requestPoll(props) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(props.method, props.action);
xhr.timeout = 500; // time in milliseconds
if (props.method === 'post') {
xhr.setRequestHeader('Content-Type', 'application/json');
}
xhr.addEventListener('load', function(e) {
resolve(e.target.responseText);
});
xhr.send(JSON.stringify(props.data));
});
}
我在这里发送请求:
requestPoll({
method: "DELETE",
action: "/messages/:"+i
});
和服务器代码:
var http = require('http');
var urlUtil = require('url');
var queryUtil = require('querystring');
var server = http.createServer(function(request, response) {
var strData,name,index;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET , OPTIONS , POST , DELETE ");
response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
if( request.method === 'DELETE' ){ // delete message
if((url.path).includes("/messages/:")){
console.log("DELETE");
index = parseInt( (url.path).substring( (url.path).indexOf(':')+1, (url.path).length ) ); // get message number
(Babble.messages).splice( index ,1);
}
} else {
response.writeHead(405);
response.end();
}
});
我已经通过更正 URL 解决了这个问题。然后它显示选项。之后我添加了一个处理 OPTIONS 的 if 案例。最后我在 nodeJS 服务器端添加了一个响应 header 以启用 DELETE,问题就解决了。
谢谢
我正在尝试将 JavaScript 中带有 JSON 删除请求的 restful 发送到 nodeJS 服务器以删除聊天应用程序中的消息。我试图通过请求 headers 启用 DELETE 方法,但它不起作用..
如何在此处启用 DELETE 方法?
这是客户请求:
function requestPoll(props) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(props.method, props.action);
xhr.timeout = 500; // time in milliseconds
if (props.method === 'post') {
xhr.setRequestHeader('Content-Type', 'application/json');
}
xhr.addEventListener('load', function(e) {
resolve(e.target.responseText);
});
xhr.send(JSON.stringify(props.data));
});
}
我在这里发送请求:
requestPoll({
method: "DELETE",
action: "/messages/:"+i
});
和服务器代码:
var http = require('http');
var urlUtil = require('url');
var queryUtil = require('querystring');
var server = http.createServer(function(request, response) {
var strData,name,index;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET , OPTIONS , POST , DELETE ");
response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
if( request.method === 'DELETE' ){ // delete message
if((url.path).includes("/messages/:")){
console.log("DELETE");
index = parseInt( (url.path).substring( (url.path).indexOf(':')+1, (url.path).length ) ); // get message number
(Babble.messages).splice( index ,1);
}
} else {
response.writeHead(405);
response.end();
}
});
我已经通过更正 URL 解决了这个问题。然后它显示选项。之后我添加了一个处理 OPTIONS 的 if 案例。最后我在 nodeJS 服务器端添加了一个响应 header 以启用 DELETE,问题就解决了。
谢谢