【发布时间】:2011-08-20 19:00:53
【问题描述】:
我正在测试一个远程消息服务,我“相信”我需要在 jQuery 中禁用 CSRF 才能使我的初始远程测试成功。
我已经在应用控制器中禁用了 CSRF。
如果我通过应用程序本身发送 POST,则消息传递有效,并且我在我的 rails 服务器日志中得到以下输出:
在 2011-05-07 10:49:29 -0400 开始为 127.0.0.1 发布“/messages”
MessagesController#create as JS 处理
参数:{"utf8"=>"✓", "authenticity_token"=>"xxx", "message"=>{"content"=>"damn"}, "commit"=>"Send"}
SQL (0.1ms) 选择名称
来自 sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'AREL (0.5ms) INSERT INTO "messages" ("content", "created_at", "updated_at") VALUES ('damn', '2011-05-07 14:49:29.887582', '2011-05- 07 14:49:29.887582') 渲染消息/_message.html.erb (3.6ms) 渲染消息/create.js.erb (8.2ms) 在 133 毫秒内完成 200 次 OK(查看次数:17.0 毫秒 | ActiveRecord:0.6 毫秒)
如果我通过 cURL 发送以下 POST 命令,我会得到以下输出:
curl -X POST -d 'message={"content":"lololol", "commit":"Send"}' http://localhost:3000/messages
在 2011-05-07 10:54:15 -0400 开始为 127.0.0.1 发布“/messages”
MessagesController 处理#create as
参数:{"message"=>"{\"content\":\"lololol\", \"commit\":\"发送\"}"}
AREL (0.3ms) INSERT INTO "messages" ("content", "created_at", "updated_at") VALUES (NULL, '2011-05-07 14:54:15.934156', '2011-05-07 14:54': 15.934156')
渲染消息/_message.html.erb (0.5ms)
渲染消息/create.js.erb (4.2ms)
在 309 毫秒内完成 200 次 OK(查看次数:28.1 毫秒 | ActiveRecord:0.3 毫秒)
我可以在我的页面上看到一个空白条目,其中包含我运行 cURL 命令时的时间戳,并且正在数据库中创建一条记录,其中包含除内容之外的所有内容。
可以安全地假设这是由于 jQuery 中的 CSRF 不允许内容发布吗?如果是这样,我该如何禁用它?还是用 cURL 发布错误?还是两者兼而有之?
提前感谢您的帮助。
【问题讨论】:
标签: jquery ruby-on-rails curl csrf