Ant*_*edo 10 javascript ajax jquery spring-integration cors
我试图用jQuery调用我的Java RESTFUL API有点困难.
调试我发现调用了OPTIONS和GET方法但是当GET方法在服务器中完成时,不会检索json并且在broswer中引发错误.
选项请求
OPTIONS /PTGServices/ptgapi/v1/clients/1/ngos HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
Access-Control-Request-Method: GET
Origin: http://localhost:8181
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
Access-Control-Request-Headers: accept, cache-control, x-custom-1, x-custom-2, authorization
Accept: */*
Referer: http://localhost:8181/jquerysample/local/index.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: es-ES,es;q=0.8,en;q=0.6
Run Code Online (Sandbox Code Playgroud)
选项响应
HTTP/1.1 204 Sin Contenido
Server: Apache-Coyote/1.1
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8181
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Authorization,Cache-control,Content-Type,Origin,X-requested-with,X-custom-1,X-custom-2,WithCredentials
Access-Control-Max-Age: 60
Date: Mon, 20 Jan 2014 14:49:25 GMT
Run Code Online (Sandbox Code Playgroud)
获得请求
Accept:*/*
Authorization:Basic dXNlcjp1c2Vy
Cache-Control:no-cache
Origin:http://localhost:8181
Referer:http://localhost:8181/jquerysample/local/index.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
X-custom-1:value1
X-custom-2:value2
Run Code Online (Sandbox Code Playgroud)
在Chrome中,此GET请求会显示橙色警告,指示:"注意:显示临时标题",并且没有GET响应
在Firefox中,没有警告但响应也是空的.
经过一番研究,我发现这篇帖子表明两个响应(OPTIONS和GET)都必须有Allow-Control标头,所以我把它放了但是仍然无法工作......
http://kodemaniak.de/2010/07/cross-domain-ajax-with-restlet-and-jquery/
有些想法?
谢谢!
更新1:
我发现它可能是一个Spring Integration"问题",因为当我检索Access-Allow-*标题时,它正在映射到"X-Access-Allow-*"
安东尼奥,你应该配置DefaultHttpHeaderMapper或userDefinedHeaderPrefix = null空String。默认情况下确实如此X-。
关于此事的 JIRA 票证:https ://jira.springsource.org/browse/INT-1722