0
REST APIを使用して角度jでアプリケーションを構築しています。私はこのREST要求HTTP DELETE要求により、Google ChromeとFirefoxで実装されていないステータス501が生成される
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
をDELETE発するとき、私は49.0.2623.112メートル(64ビット)とFirefox開発版47.0a2(2016年4月12日)、応答
Request URL: http://localhost:8080/api/users/testlogin
Request Method: DELETE
Status Code: 501 Not Implemented
Remote Address:127.0.0.1:9614
のGoogle Chromeバージョンに乗ります
奇妙な部分は、IE 11で成功したのと同じ操作です。Advanced REST client chrome app(これはステータス200を生成し、それは何をやろうとしているのですか?
コントローラ:
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);
});
};
});
リソース:
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'}
});
})
任意
はIEでは、要求は、削除実行
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
コード(angularjs v1.4.8)を含有しますなぜこの振る舞い?
あなたはcurl -v -X DELETE http:// localhost:8080/api/users/testloginの投稿をお願いします。 – thegio
@apsillers、私はIE 11リクエストヘッダを表示するように投稿を編集しました –
IEリクエストでは、あなたは '127.0.0.1'から要求を出すようですが、Chromeでは' localhost'からそれを発行しています。それは関連していますか?他の唯一の相違点は、 'Proxy-Connection'と' Connection'と 'DNT'の存在です。あなたが明示的にそれらをテストしているのでなければ、どちらかがサーバの動作に影響を与える理由は簡単にわかりません。 – apsillers