使用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.
网址形式为/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肯定没有格式错误。