Метод Restangular.remove() DELETE не разрешен методами Access-Control-Allow-Methods

Я пытаюсь выполнить метод DELETE с помощью Restangular, но он продолжает выдавать ошибку. Метод DELETE не разрешен методами Access-Control-Allow.

Много гуглил, но решения так и не нашел. Запрос работает без проблем с POST MAN, хотя

var users = Restangular.all("users", userId);
                   return users.remove()
                .then(function (response) {
                    return response;
                });

При выполнении вышеуказанного метода запроса отправляется как OPTIONS, я думаю, что это должно быть DELETE


person JyotiChhetri    schedule 06.02.2015    source источник


Ответы (2)


Я тоже что-то делаю. Вот решение:

Вы должны обновить в файле API web.config

<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="OPTIONS,GET,POST,PUT,DELETE" />

In ApiController:

[HttpDelete]
public string Delete() 
{ 
    return "u call delete"; 
} 

public HttpResponseMessage Options() { 
    var response = new HttpResponseMessage(); 
    response.StatusCode = HttpStatusCode.OK; 
    return response;
}

В угловом:

home.post().then(function (data) {
    console.log(data);
});

home.remove().then(function (data) {
    console.log(data);
});

Выход...

> u call delete

Надеюсь, что это поможет вам :)

person PAWAN RAJ Shakya    schedule 04.06.2015

я опубликую свой код для моего контроллера, я надеюсь, что это поможет вам, я использую этот контроллер с фреймворком angularjs и django rest. В CategorySerializer я возвращаю pk и имя

КатегорияСериализатор:

class CategorySerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')
    class Meta:
        model = Category
        fields = ('pk','name', 'owner','created')

в моем файле cotroller.js у меня есть код ниже, чтобы добавить категорию и удалить категорию:

appcontroller.controller('Route1Ctrl', function Route1Ctrl($scope,Restangular) {
  $scope.test = 'hello world !!!'
  $scope.name = '' 
  $scope.delete = function(pk) {
     Restangular.one('categories/',pk).remove().then(function() {
       var index = $scope.categories.indexOf(pk);
       if (index > -1) $scope.categories.splice(index, 1);
     });
  };
  Restangular.all('categories/').getList({}).then(function(data) {
   $scope.categories = data;
  });
  $scope.addCategory = function() {
    categories.post({'name':$scope.name})
  }
});
person Dimitris Kougioumtzis    schedule 24.06.2016