AngularJS + Laravel 的 CSRF 和 CORS
CSRF & CORS with AngularJS + Laravel
我正在开发具有 Laravel 后端的 AngularJS 网络应用程序。
我想通过 cross-domain 请求启用 CSRF 保护。可能吗?
$http reference 在“跨站请求伪造”中说“不会为 cross-domain 请求设置 header”
查看开发人员工具日志,我看到在 $http.post 调用之后发送了预检请求(OPTION 动词)并且它设置了 XSRF-TOKEN cookie,但是 POST请求没有 cookie,所以我不能这样做:
$http.defaults.headers.post['X-CSRFToken'] = $cookies['XSRF-TOKEN'];
有什么想法吗?
更新:
@zeroflagL:我试过
$http.defaults.headers.common.xsrfCookieName = 'XSRF-TOKEN';
$http.defaults.headers.common.xsrfHeaderName = 'X-XSRF-TOKEN';
现在在 POST 的请求 header 中,我有:
xsrfCookieName:XSRF-TOKEN
xsrfHeaderName:X-XSRF-TOKEN
但是CSRF检查没有通过(服务器上的TokenMismatchException)。
我想在请求 header 中应该有 XSRF-TOKEN 可以工作...
正如zeroflagL所说,CSRF保护不能应用于跨域请求。
回复我的问题:不,不可能。
我正在开发具有 Laravel 后端的 AngularJS 网络应用程序。
我想通过 cross-domain 请求启用 CSRF 保护。可能吗?
$http reference 在“跨站请求伪造”中说“不会为 cross-domain 请求设置 header”
查看开发人员工具日志,我看到在 $http.post 调用之后发送了预检请求(OPTION 动词)并且它设置了 XSRF-TOKEN cookie,但是 POST请求没有 cookie,所以我不能这样做:
$http.defaults.headers.post['X-CSRFToken'] = $cookies['XSRF-TOKEN'];
有什么想法吗?
更新:
@zeroflagL:我试过
$http.defaults.headers.common.xsrfCookieName = 'XSRF-TOKEN';
$http.defaults.headers.common.xsrfHeaderName = 'X-XSRF-TOKEN';
现在在 POST 的请求 header 中,我有:
xsrfCookieName:XSRF-TOKEN
xsrfHeaderName:X-XSRF-TOKEN
但是CSRF检查没有通过(服务器上的TokenMismatchException)。 我想在请求 header 中应该有 XSRF-TOKEN 可以工作...
正如zeroflagL所说,CSRF保护不能应用于跨域请求。
回复我的问题:不,不可能。