REST API と AngularJS の操作 HTTP Get 要求を行うと、400 Bad request
エラーが返されるという問題に遭遇しました。
RFC から引用:
The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
URL は次のように形成されます/target/url/id
。渡される ID は、不正な文字を含むかなり長い文字列であるため、encodeURIComponent が使用されています。例:
i-6a622da27%2F2013-09-20-09-25%2F4d610497-cfaa-42ec-8856-d5e0e2edd3ce%2F3b560f33-d5c8-4c0a-92c5-f892e4c30408
次のショートカット AngularJS GET を使用してリクエストを作成しています。
$http.get('/target/url' + encodeURIComponent(id))
.success(function (data, status, headers, config) {
console.log('win');
})
.error(function () {
console.log('fail');
});
Chrome / Firefox は単に 400 を返します。奇妙なのは、まったく同じ要求が HTTP REST クライアントで行われると、期待どおりに動作することです。リクエストにさまざまなヘッダーを追加しようとしましたが、効果はありませんでした。
ブラウザまたは HTTP クライアントからのリクエストの違いがわかりません。URL の形式が正しくないことは明らかであるため、エラー自体は奇妙です。