main.js:295 DELETE http://127.0.0.1:8081/messages/:0 405(方法不允许)在Javascript中

我试图发送JSON删除请求在JavaScript中的restful与nodeJS服务器删除聊天应用程序中的消息。 我试图通过请求头启用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解决了这个问题。 然后它显示选项。 之后,我添加了一个处理选项的if case。 最后,我在nodeJS服务器端添加了一个响应头来启用DELETE,问题就解决了。

谢谢

Interesting Posts