2015-10-14 50 views
6

CSRF koruması etkinleştirilmiş bir Spring web uygulamasına sahibim. RESTful hizmetine AJAX çağrıları üzerinden erişebiliyorum, ancak hizmete httpurlconnection gibi diğer uygulamalarla eriştiğimde, 401 hatası alıyorum (CSRF jetonu null).İlkbahar RESTful web servisleriyle CSRF koruması nasıl kullanılır?

RESTful hizmetine erişmek için istek başlığında bir belirteci geçmem gerektiğini anlıyorum, ancak CSRF belirtecini nasıl alabilirim?

cevap

10

Sen CSRF belirteci alır Bahar MVC bir eşleme oluşturabilirsiniz:

@RequestMapping(value="/csrf-token", method=RequestMethod.GET) 
public @ResponseBody String getCsrfToken(HttpServletRequest request) { 
    CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName()); 
    return token.getToken(); 
} 
+0

benim Bahar arka uç için bu ilave ve ben geta csrf-belirteci olabilir. Şimdi soru şu… bunu Spring POST/PUT web servislerime nasıl iletebilirim? JSON veri gönderimimin bu bölümünü geri göndermeyi tercih etmem. Jetonu bir başlıkta veya istekte bulunan bir çerezin parçası olarak koymaktan mutluluk duyardım. – tjholmes66

+1

@ tjholmes66 Belirteci 'X-CSRF-TOKEN' adında bir başlıkta gönderebilirsiniz. – holmis83

+0

Yep. Teşekkürler. Şimdi anladım. Teşekkürler! – tjholmes66

İlgili konular