使用 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 绝对没有格式错误。