4

假设我们有一些自动化测试 POST 请求。由于 Rails 内置 CSRF 保护,如果不包含 CSRF 令牌,这些 POST 请求将无法工作。

在这种情况下,运行自动化的最佳实践是什么?
我们是否需要在每个自定义非 GET 请求中包含 CSRF 令牌?(如果“是”那么“如何?”)
或者最好将应用程序配置为禁用自动化内容的 CSRF 保护?

4

1 回答 1

1

我不确定是什么让你首先问这个问题,但我很高兴回答这个问题:)

简短的回答是,这取决于您将用于自动化测试的工具。如果您要使用答案标签中的工具 - 带有 watir 的黄瓜 - 那么一切都会按预期工作,因为这些工具将直接自动化浏览器。

这意味着测试的行为将与现实生活中的用户相似 - 如果 CSRF 令牌检查适用于现实生活中的用户,那么它也将在您的自动化测试中工作。您不会使用这些测试手动发出任何 POST 请求(至少您不应该),但您将在网页上填写表格并提交该表格 - 这意味着 Rails 生成的 CSRF 令牌也将被提交一切都会好起来的。

但是,如果出于某种奇怪的原因您需要手动制作 POST 请求,那么您必须禁用 CSRF 检查test环境。

于 2013-01-17T21:13:22.730 回答