2016-04-13 24 views
0

'da uygulanmayan durum 501 üretiyor REST api ile açısal js olarak bir uygulama yapıyorum. Bu DİNLENME isteği Google krom Sürüm 49.0.2623.112 m (64-bit) ve Firefox Geliştirici Sürümü 47.0a2 (2016-04-12) üzerine olsunHTTP DELETE isteği, google chrome ve firefox

DELETE http://localhost:8080/api/users/testlogin HTTP/1.1 
Host: localhost:8080 
Proxy-Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: http://localhost:8080 
X-CSRF-TOKEN: 0baaf5bf-b3bf-4a9b-a770-2ab3f50d153b 
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 
DNT: 1 
Referer: http://localhost:8080/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 
Cookie: JSESSIONID=64D42E7FC0969F7F3960219309EFD0A4; remember-me=VDNpbGxmWC96clJESmNqU0d1bE0rUT09OkFHMFNxTnltRk5xMXVXVHNHRXFkNEE9PQ; CSRF-TOKEN=0baaf5bf-b3bf-4a9b-a770-2ab3f50d153b; NG_TRANSLATE_LANG_KEY=%22en%22 

, tepkisini SİL yayarlar zaman

Request URL: http://localhost:8080/api/users/testlogin 
Request Method: DELETE 
Status Code: 501 Not Implemented 
Remote Address:127.0.0.1:9614 

Tuhaf bölüm, IE 11'de de aynı işlemdir. Yukarıdaki istek, Advanced REST client chrome app kullanıldığında da çalışır (200 durumu üretir ve yapması gereken şeyi yapar :)).
Kontrolör:

angular.module('myApp') 
.controller('UserDeleteController', function($scope, $uibModalInstance, entity, User) { 

    $scope.user = entity; 
    $scope.clear = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
    $scope.confirmDelete = function (login) { 
     User.delete({login: login}, 
      function() { 
       $uibModalInstance.close(true); 
      }); 
    }; 
}); 

Kaynak:

angular.module('myApp') 
.factory('User', function ($resource) { 
    return $resource('api/users/:login', {}, { 
     'query': {method: 'GET', isArray: true}, 
     'get': { 
      method: 'GET', 
      transformResponse: function (data) { 
       data = angular.fromJson(data); 
       return data; 
      } 
     }, 
     'save': { method:'POST' }, 
     'update': { method:'PUT' }, 
     'delete':{ method:'DELETE'} 
    }); 
}) 

Herhangi

IE'de, istek silme gerçekleştirir

Request DELETE /api/users/testlogin HTTP/1.1 
X-CSRF-TOKEN d112e1f0-2b04-47a1-a8fb-4873c769ab2f 
Accept application/json, text/plain, */* 
Referer http://127.0.0.1:8080/ 
Accept-Language fr-FR 
Accept-Encoding gzip, deflate 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 
Host 127.0.0.1:8080 
Content-Length 0 
Connection Keep-Alive 
Cache-Control no-cache 
Cookie remember-me=RGxLZ20vQXcrNVZEVXFFMVNyN2p3dz09OmRTNEtwZWErTitHRjg1MEJNTENXbUE9PQ; JSESSIONID=96484DEDF9D04D275DE43ADB186572C6; CSRF-TOKEN=d112e1f0-2b04-47a1-a8fb-4873c769ab2f; NG_TRANSLATE_LANG_KEY=%22fr%22 

Kod (angularjs v1.4.8) içerir fikri neden bu davranış?

+0

lütfen şu sonuçları gönderin: curl -v -X DELETE http: // localhost: 8080/api/users/testlogin – thegio

+0

@apsillers, IE 11 istek başlığını gösterme konusunu düzenledim –

+0

IE isteğinizde, '127.0.0.1' dan gelen isteği yayınlıyorsunuz, ancak Chrome'da, 'localhost''dan düzenliyorsunuz. Bu ilişkili olabilir mi? Gördüğüm diğer tek fark, "Proxy-Connection" ve "Connection" ile "DNT" nin varlığıdır ve ben bunlardan herhangi birinin, açık bir şekilde test etmedikçe, sunucu davranışını neden etkileyeceğini kolayca göremiyorum. – apsillers

cevap

0

intellij önbelleğini geçersiz kılarak ve tarayıcı önbelleğini temizleyerek de çözüldü. Sanırım prod :) 'da bir önbellek bozucu eklemem gerekecek.

İlgili konular