什么时候使用隐藏字段,什么时候使用头部,为什么?
当我们使用X-XSRF_TOKEN的时候?
当我们使用X-CSRF TOKEN的时候?
发布于 2019-05-15 16:24:08
它们都是为了防止跨站请求伪造,当你向后端发送请求时,只需要使用其中一个就可以了。不同的名字来自不同的框架。
这一切都是为了向后端发送一个csrf value。然后,后端会将其与存储在数据库中的特定用户的CSRF值进行比较,如果匹配,则允许处理该请求。
csrf :
<input name="my_csrf_input" value="a_hashed_string_the_csrf_value"x-csrf-token:
csrf value放在元标记中,然后在前端我们可以从该元标记中获取值并将其发送到后端。特定于Laravel:
使用laravel作为后端时的
csrf value进行比较。(laravel有一个中间件来实现此目的)x-xsrf-token:
它被添加到ajax requests.
axios,自动从xsrf-token cookie中获取该头的值,并将其放入每个请求头中。
xsrf-token的cookie,然后使用angular或axios的前端框架将使用它特定于Laravel:
因为
axios或angular与laravel一起使用时,您不需要做任何事情。只需登录用户,'auth‘中间件就可以完成这项工作。
x-csrf-token更大,因为cookie在laravel中是加密的。发布于 2017-02-23 14:26:04
当您使用ajax提交数据时,您将需要CSRF令牌的头部,因为ajax不会将令牌与数据一起发送。
您可以通过以下代码对ajax请求使用隐藏字段
$.ajaxSetup(
{
headers:
{
'X-CSRF-Token': $('input[name="_token"]').val()
}
});但是您必须为每个ajax请求添加隐藏字段。
X-CSRF-TOKEN和X-XSRF-TOKEN之间的区别在于,前者使用明文值,后者使用加密值,因为Laravel中的cookie始终是加密的。如果使用csrf_token()函数来提供令牌值,则可能需要使用X-CSRF-TOKEN头。
它在laravel 5.2文档中被删除了,但是你可以在laravel 5.0文档中找到它,链接是here
https://stackoverflow.com/questions/42408177
复制相似问题