main.js: 295 УДАЛИТЬ http://127.0.0.1:8081/messages/:0 405 (метод не разрешен) в Javascript

1

Я пытаюсь отправить успокоительный запрос JSON Delete в JavaScript на узел 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();
    }

});
  • 1
    Попробуйте console.log(request.method) чтобы увидеть, почему он идет по неверному пути
  • 0
    Уже сделал. он не получает никаких запросов, кроме GET и POST
Показать ещё 4 комментария
Теги:
xmlhttprequest
rest

1 ответ

1
Лучший ответ

Я уже решил это, исправив URL. Затем он показал ВАРИАНТЫ. Впоследствии я добавил случай if, который обрабатывал ВАРИАНТЫ. Наконец, я добавил заголовок ответа на стороне узла nodeJS, чтобы включить DELETE, и проблема была решена.

Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню