Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 关于RequestForgeryProtection for API请求的Rails文档_Ruby On Rails_Json_Csrf_Csrf Protection - Fatal编程技术网

Ruby on rails 关于RequestForgeryProtection for API请求的Rails文档

Ruby on rails 关于RequestForgeryProtection for API请求的Rails文档,ruby-on-rails,json,csrf,csrf-protection,Ruby On Rails,Json,Csrf,Csrf Protection,我正在读关于防止伪造的笔记,这几行真的让我困惑 请务必记住,XML或JSON请求也会受到影响,如果您正在构建API,则应更改ApplicationController中的伪造保护方法(默认情况下::exception): class ApplicationController{request.format.json?} 结束 CSRF保护通过protect_from_fackery方法打开。默认情况下,protect_from_forgery使用:null_session方法保护会话,该方法在

我正在读关于防止伪造的笔记,这几行真的让我困惑

请务必记住,XML或JSON请求也会受到影响,如果您正在构建API,则应更改ApplicationController中的伪造保护方法(默认情况下::exception):

class ApplicationController{request.format.json?}
结束
CSRF保护通过protect_from_fackery方法打开。默认情况下,protect_from_forgery使用:null_session方法保护会话,该方法在请求期间提供空会话

它说异常是
防止伪造的默认值,除非:->{request.format.json?}
,但后来说空会话是
防止伪造的默认值

这是否意味着,如果我们使用
防止伪造,除非:->{request.format.json?}
,异常将成为默认值?如果我们使用的是
防止伪造
,空会话将成为默认会话


非常感谢您的帮助。

如果有点混乱,文档是准确的;每个语句都引用不同的“默认”行为。第一条语句的意思是,新Rails应用程序的默认值是使用以下行生成ApplicationController:

protect_from_forgery :exception
但是,第二条语句的意思是,对于
protect\u from\u forgery
方法,如果省略,参数的默认值是
:null\u session
。因此,如果要从ApplicationController中删除
:exception
,即,您刚刚:

protect_from_forgery
然后使用的行为将是
:null_session
(请参阅以获取证据)

因此,第一条语句是指为新Rails应用程序生成的默认代码;第二条语句引用方法本身的默认值。但奇怪的是,他们是不同的

protect_from_forgery