2015-02-23 116 views
0

這就是我如何處理sendig csrf_token()的過程。無法將令牌從AngularJS發送到Laravel API

<head>部分,我將令牌添加爲常量。

<script type="text/javascript"> 
     var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'productController', 'productService']) 
     .constant("CSRF_TOKEN", '<?= csrf_token() ?>'); 
</script> 

productService當我發送後的數據,我包括以下:

headers: {'Content-Type': 'multipart/x-www-form-urlencoded', 'X-XSRF-TOKEN': CSRF_TOKEN} 

然後我從Laravel收到錯誤:

DecryptException: invalid data 

如果我從上方headers:除去X-XSRF-TOKEN ,那麼我收到TokenMismatchException

正如另一篇文章中所建議的,我加密csrf_token(),因爲Laravel期望令牌被加密,但即使如此,我仍然收到DecryptException: invalid data

+1

使用瀏覽器的*網絡*控制檯確認請求中發送的值。如果包含任何不安全的字符(如單引號),也就是'.constant('CSRF_TOKEN',<?= json_encode(csrf_token())?>),我還會使用'json_encode() – Phil 2015-02-23 23:59:03

+0

@菲爾是的。我欣賞網絡控制檯的提示,我一直只使用原始控制檯。 – user2094178 2015-02-24 00:05:35

回答

0

X-XSRF-TOKEN更改爲X-CSRF-TOKEN解決了這個問題。

測試時,我必須摧毀cookie並重啓瀏覽器的令牌一命嗚呼。

+0

我沒有使用完全相同的常量方法,但我使用相同的函數並將標記存儲在元標記中。 ''>'但是如果我使用'CSRF'並且'如果使用'XSRF'''不能解密'錯誤,我會得到'token mismatch'!我正在使用laravel 5.並且我面對此服務器上的本地角度默認生成每個請求的標記 – KillABug 2015-04-25 09:23:40

+0

我在這裏添加了一個問題,如果你可以幫助http://stackoverflow.com/questions/29863483/unable-to- decryt-CSRF-XSRF令牌合laravel發送的貫通角 – KillABug 2015-04-25 09:56:46

0

變化XSRF到CSRF並重啓瀏覽器。