2015-10-23 4 views
3

Я пытаюсь подготовить Delete запрос в AngularJS на nodeJS локальный сервер:Ответ на предполетный имеет недействительный статус HTTP код 404 угловатых JS

this.deleteMusician = function(id) { 
     $http({ 
      url: 'http://localhost:3000/musicians/' + id, 
      method: "DELETE", 
      data: {} 
      //processData: false, 
      //headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     }).success(function (data, status, headers, config) { 
      console.log(data); 
     }).error(function (data, status, headers, config) { 
      console.log(data); 
     }); 
    }; 

И мой nodeJS маршрут выглядит следующим образом:

app.delete('/musicians/:id', musicians.delete); 

Тот же запрос через PostMan работает, но в Google Chrome я получаю:

OPTIONS http://localhost:3000/musicians/5628eacaa972a6c5154e4162 404 (Not Found) 
XMLHttpRequest cannot load http://localhost:3000/musicians/5628eacaa972a6c5154e4162. Response for preflight has invalid HTTP status code 404 

CORS включено:

var allowCrossDomain = function(req, res, next) { 
    // Website you wish to allow to connect 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost'); 

    // Request methods you wish to allow 
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 

    // Request headers you wish to allow 
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

    // Set to true if you need the website to include cookies in the requests sent 
    // to the API (e.g. in case you use sessions) 
    res.setHeader('Access-Control-Allow-Credentials', true); 

    // Pass to next layer of middleware 
    next(); 
}; 

app.use (allowCrossDomain);

+0

В зависимости от промежуточного слоя используется вам нужно для включения CORS в инфраструктуру сервера, поскольку это похоже на запрос перекрестного домена. – Chandermani

ответ

3

Вам нужно будет настроить сервер узла ожидать метод вариантов too.Check этот другой answer

так:

app.options('/musicians/:id', optionsCB); 

и:

exports.optionsCB = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'DELETE'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type'); 

    next(); 
} 
Смежные вопросы

 Смежные вопросы