假设我们有一些自动化测试 POST 请求。由于 Rails 内置 CSRF 保护,如果不包含 CSRF 令牌,这些 POST 请求将无法工作。
在这种情况下,运行自动化的最佳实践是什么?
我们是否需要在每个自定义非 GET 请求中包含 CSRF 令牌?(如果“是”那么“如何?”)
或者最好将应用程序配置为禁用自动化内容的 CSRF 保护?
假设我们有一些自动化测试 POST 请求。由于 Rails 内置 CSRF 保护,如果不包含 CSRF 令牌,这些 POST 请求将无法工作。
在这种情况下,运行自动化的最佳实践是什么?
我们是否需要在每个自定义非 GET 请求中包含 CSRF 令牌?(如果“是”那么“如何?”)
或者最好将应用程序配置为禁用自动化内容的 CSRF 保护?
我不确定是什么让你首先问这个问题,但我很高兴回答这个问题:)
简短的回答是,这取决于您将用于自动化测试的工具。如果您要使用答案标签中的工具 - 带有 watir 的黄瓜 - 那么一切都会按预期工作,因为这些工具将直接自动化浏览器。
这意味着测试的行为将与现实生活中的用户相似 - 如果 CSRF 令牌检查适用于现实生活中的用户,那么它也将在您的自动化测试中工作。您不会使用这些测试手动发出任何 POST 请求(至少您不应该),但您将在网页上填写表格并提交该表格 - 这意味着 Rails 生成的 CSRF 令牌也将被提交一切都会好起来的。
但是,如果出于某种奇怪的原因您需要手动制作 POST 请求,那么您必须禁用 CSRF 检查test
环境。