Tag: http

有关HTTP身份validation方案的建议(使用请求标头)

我在Heroku上托管了一个rails应用程序,它限制了使用代理服务的访问权限。 外部服务器充当所有请求的中介并处理用户身份validation。 用户通过身份validation后,服务器(我认为LDAP)会将用户名添加到请求标头中,并将其重定向到我的应用程序。 我想使用请求标头中的用户名来validation我的应用中的用户。 基本上,如果用户不存在,我会创建一个用户名(不需要密码),如果不是,我只会登录。我将把用户存储在我的应用程序的数据库中。 我该怎么做? 为此可以使用Devise吗? 编辑 :我使用Devise /自定义Warden策略,如下所示: # config/initializers/my_strategy.rb Warden::Strategies.add(:my_strategy) do def valid? true end def authenticate! if !request.headers[“my_key”] fail!(“You are not authorized to view this site.”) redirect!(“proxy_url”) else username = request.headers[“my_key”] user = User.find_by_username(username) if user.nil? user = User.create(:username => username) end success!(user) end end end #config/initializers/devise.rb config.warden do |manager| manager.default_strategies(:scope […]

HTTP状态代码302

我正在使用Ruby中的Rails后端,我想将数据发布到此服务器。 但如果我用PAW做一个Post-request,我会被重定向。 我是Http Requests的新手。 有人可以解释我的function以及如何使用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 […]

Ruby on Rails,如何禁用/关闭ETag

问候, 如何在Ruby on Rails v2.3.5中关闭ETag 当我直接向RoR / Mongrel请求时,会出现ETag标头。 TIA, -daniel

处理rails应用程序中的rack_throttleexception

当速率限制超出时,我如何处理由rack-throttle gem产生的错误? 现在我得到一个包含以下内容的回复: Internal Server Error undefined method `each’ for “403 Forbidden (Rate Limit Exceeded)\n”:String 这是堆栈跟踪 ERROR NoMethodError: undefined method `each’ for “403 Forbidden (Rate Limit Exceeded)\n”:String /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/active_record/query_cache.rb:45:in `each’ /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:458:in `each’ /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.3.6/lib/rack/body_proxy.rb:23:in `method_missing’ /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/rack/content_length.rb:26:in `call’ /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/rack/log_tailer.rb:14:in `call’ /home/rkapitonov/.rvm/gems/ruby-1.9.2-p290/gems/rack-1.3.6/lib/rack/handler/webrick.rb:59:in `service’ /home/rkapitonov/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service’ /home/rkapitonov/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run’ /home/rkapitonov/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread’ 如何处理此错误并呈现一些自定义文件或进行重定向?

将通过Mailgun通过电子邮件发送和处理的信息保存到我的应用中

我已经设置了Heroku和Railgun,以便能够从电子邮件中获取内容并存储它。 我已经明白,当电子邮件被发送到mailgun时,它们会被转发到我的应用程序,并且我的消息模型的空实例会自动创建,但是,电子邮件中没有任何字段被存储(尽管有匹配的schema(例如from:string subject:string etc))。 我的问题是我无法弄清楚如何获取HTTP POST请求的内容并对其进行处理,以便每条消息都存储有相应的信息。 我可以看到它进入heroku(通过heroku日志),但无法存储它。 我希望首先存储以下字段: 从 学科 附件 目前我的messages_controller.rb看起来像这样 def create @message = Message.new(params[:message]) respond_to do |format| if @message.save format.html { redirect_to @message, notice: ‘Message was successfully created.’ } format.json { render json: @message, status: :created, location: @message } else format.html { render action: “new” } format.json { render json: @message.errors, status: […]

对Rails应用程序的第一个请求非常慢

我的Rails应用程序的第一个请求(工作会话)总是滞后。 切换到生产模式没有帮助。 我使用mongrel,其他请求以可接受的速度处理。 如何让它更快? 问候

防止rails 3上的ruby解析JSONpost

我在Ruby on Rails 3中有一个控制器方法,它接受application / JSON作为内容类型。 这一切都按预期工作,但我实际上不希望rails自动解析POST请求正文中的JSON。 此方法充当网关,只是将信息传递到队列中,并且可能非常大。 我不想浪费时间将数据处理到@_params,因为它是不必要的。 我相信我可以通过将请求标头中的内容类型设置为其他内容来解决这个问题,但我希望对于HTTP请求在语义上是正确的。 如何禁用此function? 编辑:更具体地说,如何才能为这一条路线编辑此function?

如果部分响应已发送(分块),如何将浏览器发送到错误页面

这是典型的场景:评估页面,并且有一个缓冲区 – 一旦缓冲区已满,评估页面的一部分就会被发送到浏览器。 这使用HTTP 1.1分块编码。 但是,其中一个块(在已经发送第一个块之后)可能会发生错误。 在这种情况下: 您无法重定向(发送Location标头),因为标头和响应状态已经发送 你不能做服务器端重定向(转发),因为新页面必须在已经发送的部分之后呈现 – 它肯定会看起来很难看。 那么在这种情况下你应该怎么办? 我问了一个问题 ,你是否可以在chunked预告片中发送一个Location标题,但这是低级的http,语言的抽象可能不允许它,即使它是可能的(并且它可能不支持跨浏览器) 另一种选择是发送window.href.location=”errorPage” ,从而强制客户端重定向,但这很难看。 另外,您必须使用关闭部分页面中任何可能未关闭的标记。 (我正在标记主要的网络语言/框架,因为这是一个普遍的问题)

Node.js – 在HTTP GET请求查询中发送时,数组转换为对象

以下Node.js代码: var request = require(‘request’); var getLibs = function() { var options = { packages: [‘example1’, ‘example2’, ‘example3’], os: ‘linux’, pack_type: ‘npm’ } request({url:’http://localhost:3000/package’, qs:options}, function (error , response, body) { if (! error && response.statusCode == 200) { console.log(body); } else if (error) { console.log(error); } else{ console.log(response.statusCode); } }); }(); 发送以下接收的http GET请求查询: {“packages”=>{“0″=>”example1”, […]

如何匿名识别用户并存储该信息

我需要一个简单的用户识别系统,以允许/禁止一个动作 。 这不是一个高安全性要求 ,可以犯错误(例如,同一用户将使用不同的浏览器执行不允许的操作)。 为了减少抽象,让我们看看StackOverflow投票,并假设我们希望允许公众投票 ,但只允许一次。 最简单的方法就是使用cookie :每个答案设置一个新的cookie; 将所有投票存储在一个cookie中(或以某种方式组合这些)。 由于cookie大小/数量的限制,这有点不可靠。 它还会一直将cookie发送到网站,而只需要1次操作。 所以从这个角度来看,我想避免使用cookie。 但是,不要在常规HTTP上做得更好。 我不考虑IP / MAC地址等。 因此,根据上述背景,问题是:如何匿名识别用户并将该信息存储在客户端上? 谢谢。