2016-10-30 2 views
0

私は春のセキュリティ(3.2.3、CSRFの保護なし)と角度のある春のwebappを持っています。Spring + Angular/IEはPUTで403を取得します(その他のものはありません)

@RequestMapping("/accountinfo/password", method = arrayOf(RequestMethod.PUT)) 
@ResponseBody 
@Secured("ROLE_USER") 
open fun updateOwnPassword(user: User, @RequestBody password: String) { 
    val editedUser = user 
    editedUser.password = encoder.encode(password) 
    userRepository.save(editedUser) 
} 

要求は、角度サービスを介して行われます:

function changeOwnPassword(newPassword) { 
     return $http 
      .put('accountinfo/password', newPassword) 
      .then(function (response) { 
       return response.data 
      }); 
    } 

これは私がテストしたすべてのブラウザでは正常に動作します私は、ユーザPWを更新するには、このような方法を持っているコントローラで

と。 Citrix環境でInternet Explorer 11.0.35を使用している場合を除きます(外部で動作しますが、特定の構成は表示されません)。 その場合、私はリクエストで403を取得します。 POSTにメソッドを変更すると、再び正常に動作します。私はもちろん、この問題を抱えているすべての機能についてそれを行うことができますが、それはきれいなソリューションのようには見えません。

私の研究が進んでいる限り、私はそれがブラウザが要求を書く方法に何か問題があると思うが、それは私が何をすべきかを知ることができなかったことである。

EDIT: IE 11.0.35の要求ヘッダーをCitrixの内部と外部の両方で比較したところ、まったく同じように見えました。唯一の違いは、作業バージョンでUser-Agent属性でDNT = 1とWOW64として動作しないバージョンが使用されていることです。

UPDATE: 私はそれがあまりにもDELETEで問題が見つかり

+0

ここをクリックしてください:http://stackoverflow.com/questions/18172915/jquery-ajax-put-request-issue-in-internet-explorer – developer

+0

私はすでに。また、Citrix以外のInternet Explorerでも動作することに注意してください – Heady

+0

とにかくその解決策を試してみましたが動作しませんでした – Heady

答えて

0

起こることが判明:クライアントはPUTを好きでは削除されません追加のプロキシを介して要求を送信し、それをオフセッションクッキーをカットします。我々は、将来的にヘッダーにトークンを入れることでその問題に取り組んでいる。

関連する問題