問題聲明:我有一些使用spring安全性進行CSRF保護的restful API。此外,這些API將通過Angular WEB UI從不同Origin /域訪問。由於Siteminder處理身份驗證,因此我不需要Spring身份驗證。Spring安全性CSRF CORS
方法: 我跟着從戴夫Syer的CSRF保護此鏈接:The Login Page: Angular JS and Spring Security Part II這是除了一個問題(下)完美的工作。
問題:當我的角度html客戶端訪問同一個origin/domain上的RESTful API時,此代碼工作得很好;但是當我嘗試從不同來源訪問相同的API時,出現403錯誤 - Access Forbidden - CSRF令牌錯誤。
做法,我至今試圖通過擴展您的例子:
增加了CORS過濾器 - Enabling Cross Origin Requests for a RESTful Web Service
response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
以上沒有運氣。
請提出建議,如果我需要做其他事情才能使之有效。
感謝, 網速慢
非常感謝@Dave Syer!它在從這裏爲客戶端添加幾行角碼之後起作用:[link] https://github.com/pasupulaphani/angular-csrf-cross-domain。此外,在CORS過濾器中添加Access-Control-Allow-Headers:origin,content-type,X-CSRF-TOKEN以使其可以從不同的來源訪問。 訪問控制請求方法:POST – Sum
可以請你發佈什麼你添加到angularjs應用程序,以使其運行?謝謝! – skywalker
請參閱此處的代碼:https://github.com/dsyer/spring-security-angular/blob/master/single/src/main/java/demo/UiApplication.java#L65 –