我使用AngularJS 1.4和Spring 4 RestController。当我在我的开发机器上发出GET请求时,一切正常。但是,当我将完全相同的war文件部署到我们的测试服务器时,来自完全相同浏览器的完全相同的请求将返回HTTP 406 Not Acceptable。
我的开发机器上只有两个环境之间存在差异,我使用嵌入式Tomcat 8,而测试服务器应用程序部署在Tomcat 7上。
我的请求包含一个包含电子邮件地址的路径变量。
发出请求的angularjs代码:
utilService.emailD = function(email) {
return $http({
method : 'GET',
url : 'util/emailD/' + encodeURIComponent(email)
}).then(
function successCallback(response) {
return response.data;
},
function errorCallback(response) {
return {
error : true
};
});
}
接受请求的Spring控制器
@RequestMapping(value = "/emailD/{email:.+}",
method = RequestMethod.GET,
produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> emailD(@Email @Valid @PathVariable(value = "email") String email) {
try {
log.debug("request emailD, email: {}", email);
//omitted irrelevant code
return new ResponseEntity<String>(someString, HttpStatus.OK);
} catch (IllegalArgumentException iae) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
你有什么理由可以想到这可能导致这种行为吗?
答案 0 :(得分:1)
此处描述了问题本身(以及多种工作解决方案):
spring-json-request-getting-406-not-acceptable
在您的情况下,情况可能是您的本地Tomcat在类路径上具有所需的lib,而远程Tomcat则没有。由于您的应用程序需要这些,最好的解决方案是通过Maven声明为依赖项。另一种选择是将jackson库添加到Tomcat的lib
文件夹中。