ruby-on-rails – HTTP状态码302
我在
Ruby上运行我的Rails后端,我想将数据发布到此服务器.但如果我用PAW做一个Post-request,我会被重定向.我是Http Requests的新手.有人可以解释我的功能以及如何使用http post请求吗?
我想在我的服务器的datanase(sqlite3)上发布信息. 这是一个截图,应该解释一切: 这是如何运作的?请解释 :) 这是代码: OwnersController: #app/controllers/owners_controller.rb class OwnersController < SessionsController respond_to :html before_action :owner_find,only: [:show,:edit,:update,:destroy] def index @owners = Owner.all end def show end def update @owner = Owner.find(params[:id]) if @owner.update(owner_params) redirect_to @owner else render 'edit' end end def new @owner = Owner.new end def destroy @owner.destroy redirect_to owners_path end def edit end def create @owner = Owner.new owner_params if @owner.save! flash[:notice] = 'You signed up successfully' flash[:color]= 'valid' redirect_to owners_path else flash[:notice] = 'Form is invalid' flash[:color]= 'invalid' render 'new' end end private def owner_find @owner = Owner.find(params[:id]) end def owner_params params.require(:owner).permit(:name,:password,:password_confirmation,:token) end end SessionController: class SessionsController < ApplicationController before_filter :authenticate_user,:except => [:login,:login_attempt] def login #goes to Login Form end def logout session[:owner_id] = nil redirect_to :action => 'login' end def login_attempt authorized_user = Owner.authenticate_by_name(params[:login_name],params[:login_password]) if authorized_user session[:owner_id] = authorized_user.id flash[:notice] = "Wow Welcome again,you logged in as #{authorized_user.name}" redirect_to welcome_index_path else flash[:notice] = 'Invalid Username or Password' flash[:color]= 'invalid' render 'login' end end end 控制台日志: 来自网络请求(http://192.168.2.144:3000/owners?name=hans&password=hans321&password_confirmation=hans321)
它告诉200确定但数据库中没有任何反应. 来自Paw-Request(所以我可以使用post.顺便说一下.我如何在浏览器请求中使用post?
似乎CRSF认证失败了.. 编辑: 首先: 我接近解决方案..我的问题是:我不能把正确的参数放在网址中. token-auth被禁用以进行测试.所以它不重要. 参数应该是这样的: 而不是在我的要求中: 解决方法
HTTP状态代码
首先,30倍响应意味着“Resource Moved”. 许多SEO人员使用301响应来表示资源的永久重新定位. 302并不常见,但仍然意味着类似的事情. 每次发送&接收HTTP请求,您将收到状态代码.典型的是200响应 – 状态成功! 你所看到的是 if @owner.save! flash[:notice] = ... redirect_to owners_path 我之前从未使用过PAW,但我认为它只是给你服务器的纯响应,在这种情况下是30x“资源移动”代码. 我希望一个典型的浏览器请求加载重定向的路由并在屏幕上显示其产量. 服务器 作为测试方法,您应该在浏览器中尝试相同的事务: lvh.me:3000/orders (lvh.me is a domain routed to your own localhost有助于Rails中的子域) 这将使您能够测试并查看响应中发生的情况.您*应该*发现您的数据已保存到数据库中(尽管在您的情况下是SQLite3). 句法 最后,您需要确保在代码中使用正确的语法. 特别: #app/controllers/owners_controller.rb class OwnersController < ApplicationController ... def create @owner = Owner.new owner_params end private def owner_params params.require(:owner).permit(:name,:password_confirmation) end end 您还需要查看 测试 我倾向于使用标准浏览器功能测试我的Rails应用程序. 这意味着您可以运行 你正试图使用??这个PAW的东西,这是好的,但是在应用程序的用户交互性方面没有给你太多的灵活性(例如,提交真实的表格等)…… 在你的情况下,我会做以下事情: #app/views/orders/new.html.erb <%= form_for @order do |f| %> <%= f.text_field :name %> <%= f.password_field :password %> <%= f.password_field :password_confirmation %> <%= f.submit %> <% end %> 然后,您将访问lvh.me:3000/orders/new并提交表单.这将告诉你它是如何响应的! HTTP 好的,这是处理HTTP请求… 每当您向Web应用程序发送一条事务数据时,都可以通过HTTP请求执行此操作. HTTP请求只是通过“Internet”发送数据的一种方式. 使用基于Rails的应用程序,这意味着每次在应用程序中“执行”操作时,您实际上都是向Web服务器发送HTTP请求. Rails解释此请求并发送响应.这个回答是你的问题所在. 你问的是收到302个回复 – 这是网络服务器说你被重定向的方式.说实话,这是非常基本的东西;您的浏览器处理大部分内容. 一个很棒的教程可以在here找到: 好吧那你的错误如下:
我稍后可以详细说明,但就目前而言,您可能希望查找此解决方案:WARNING: Can’t verify CSRF token authenticity in case of API development (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |