-2
이 기사를 읽고 http://blog.neoxia.com/laravel4-and-angularjs/을 사용하여 CSRF 토큰을 설정하고 필터링합니다. 로컬 서버에서 작동하도록 만들 수 있지만 라이브를 배포하고 테스트 한 후에도 "상태 코드 418"이 계속 표시됩니다. 어떤 생각?필터 CSRF에 대한 보안을위한 CSRF 토큰
Route.php :
// Route to filter CSRF
Route::filter('serviceCSRF',function(){
if (Session::token() != Request::header('csrf_token')) {
return Response::json([
'message' => 'Security token doesn\'t match, possible CSRF attack.'
], 418);
}
});
// Route for authentication
Route::group(['prefix' => 'api/auth', 'after' => 'allowOrigin'], function() {
Route::get('check', [
'as'=>'check_auth_path',
'uses'=>'[email protected]'
]);
Route::post('login', [
'as'=>'login_path',
'uses'=>'[email protected]'
]);
Route::get('sentryLogout', [
'as'=>'logout_path',
'uses'=>'[email protected]'
]);
});
세션 컨트롤러 :
class SessionsController extends \BaseController {
public function __construct() {
$this->beforeFilter('serviceCSRF');
}
...
app.js : 해결
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "//" + window.location.hostname + "/api/csrf", false);
xhReq.send(null);
app.constant("CSRF_TOKEN", xhReq.responseText);
app.run(function ($window, $couchPotato, $rootScope, $state, $stateParams, $http, CSRF_TOKEN) {
app.lazy = $couchPotato;
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
// editableOptions.theme = 'bs3';
$http.defaults.headers.common['csrf_token'] = CSRF_TOKEN;
// watch for location path change
$rootScope.$on("$locationChangeStart",function() {
....
음들, 왜 모든 다운 투표에서 rvs1977에
감사합니다? – Theren
상태 코드는 4 월 바보 농담입니다 ... – RichardBernards
알아요. 문제는 생산이 아닌 현지에서 작동하는 이유입니까? – Theren