Spring Security REST应用程序 - 错误的内容类型和缺少的标题

时间:2015-11-10 07:59:24

标签: json spring spring-mvc spring-security spring-security-oauth2

在REST应用程序内部(使用Spring 4.2.2,Spring-Security 4.0.3,Spring-Security oAuth2 2.0.8),我们注意到一种奇怪的行为,有时(在10/20请求中一次)响应不包含所有标题(例如Content-length)和内容类型都是错误的(t​​ext / plain而不是application / json)。

当一切按预期工作时,我们会得到以下响应标题:

HTTP/1.1 200 OK
Date: Wed, 04 Nov 2015 14:26:00 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: AUTHORIZATION, CONTENT-TYPE
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Content-Type: application/json;charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1571
Connection: close

然而,当我们遇到"问题"我们只收到:

HTTP/1.1 200 OK
Date: Wed, 04 Nov 2015 14:23:36 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: AUTHORIZATION, CONTENT-TYPE
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain; charset=UTF-8

问题发生在我们的服务器上,其中应用程序在Apache HTTPD服务器(使用mod_ajp)后面的Tomcat(6和7)上运行,在我们使用VMware vFabric tc Server的开发环境中运行。 我们在所有主流浏览器上都遇到过这个问题,并且还使用了curl。

我们注意到问题似乎只有在" parallel"请求被发送到服务器。实际上,如果我们调用数百次相同的服务(例如使用shell脚本),问题就不会发生。相反,如果在同一测试期间,我们还会执行其他请求(来自浏览器)。

问题可能是由某些图书馆冲突造成的吗?我们在应用程序中使用了Jackson 2.x但是我已经看到Spring Security oAuth仍然引用了Jackson 1.x(但是它说它适用于两者)=>在war文件中我们有两个库。 或者可能是Message converver的问题?还有什么?

非常感谢您的帮助和支持。

祝你好运

0 个答案:

没有答案