假设我们有一些自动化测试POST请求。由于Rails内置的CSRF保护,如果不包含CSRF-token,这些POST请求将无法工作。
在这种情况下运行自动化的最佳实践是什么?
我们需要在每个自定义的非GET请求中包含CSRF令牌吗?(如果“是”,那么“如何?”)
或者更好的做法是配置app来禁用自动化的CSRF保护?
发布于 2013-01-18 05:13:23
我不确定是什么让你一开始问这个问题,但我很高兴回答这个问题:)
简而言之,这取决于您将用于自动化测试的工具。如果你要在答案的标签中使用工具- cucumber with watir -那么一切都会像预期的那样工作,因为这些工具将直接使浏览器自动化。
这意味着测试的行为将类似于现实生活中的用户-如果CSRF令牌检查对现实生活中的用户有效,那么它也将在您的自动化测试中起作用。你不会通过这些测试手动提交任何POST请求(至少你不应该这样做),但你需要在网页上填写一个表单并提交该表单-这意味着由Rails生成的CSRF令牌也会被提交,一切都会很好。
但是,如果出于某种奇怪的原因,您需要手动创建POST请求,那么您必须禁用test环境的CSRF检查。
https://stackoverflow.com/questions/14374195
复制相似问题