我想允許一個域的跨源請求。我的項目使用Spring,所以我想利用新的CORS支持。Spring CORS控制器註釋不起作用
對於所有springframework
依賴關係,我正在使用版本4.2.0
。
我跟着這裏的例子https://spring.io/blog/2015/06/08/cors-support-in-spring-framework#disqus_thread並嘗試了第一個版本。我的控制器註釋如下所示:
@CrossOrigin(origins = "http://fiddle.jshell.net/", maxAge = 3600)
@Controller
@RequestMapping("/rest")
public class MyController
如果我理解正確,mvc-config是一種替代方法。我試了一下,以及:
<mvc:cors>
<mvc:mapping path="/**"
allowed-origins="http://fiddle.jshell.net/, http://domain2.com"
allowed-methods="GET, PUT"
allowed-headers="header1, header2, header3"
exposed-headers="header1, header2" allow-credentials="false"
max-age="123" />
</mvc:cors>
無論使用哪種方法,響應似乎並不包含類似Access-Control-Allow-Origin
什麼,無論是我能得到一個結果回通過從的jsfiddle一個簡單的查詢。
從本地主機運行並訪問時,來自Chrome開發人員工具的標頭信息如下。在這種情況下,請求來自同一個域,而不是通過javascript,但我認爲CORS註釋會添加訪問控制參數?
響應頭:
Content-Length:174869
Content-Type:text/html;charset=UTF-8
Date:Fri, 21 Aug 2015 12:21:09 GMT
Server:Apache-Coyote/1.1
請求頭:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*\/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,ro;q=0.6,de;q=0.4,fr;q=0.2
Cache-Control:no-cache
Connection:keep-alive
Cookie:JSESSIONID=831EBC138D2B7E176DF4945ADA05CAC1;_ga=GA1.1.1046500342.1404228238; undefined=0
Host:localhost:8080
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36
我不使用彈簧引導和我相信我錯過了配置步驟。
我也嘗試使用'@ RestController'而不是'@ Controller',但它似乎沒有對標題做任何改變。 – ilinca
你有沒有嘗試從另一個域?如果請求不是跨源的,那麼我不明白爲什麼服務器應該在響應中添加CORS頭文件 –
你能以某種方式解決它嗎?我有同樣的問題。 –