小编Rat*_*lle的帖子

浏览器未显示X-Forwarded-For标头的原因

注意:请阅读完整的问题

我试图理解为什么每次请求页面时浏览器都没有向我显示任何X-Forwarded-For标头

BTW这里是我的请求标题看起来像

Request URL:http://localhost:3000/users/sign_in
Request Method:GET
Status Code:304 Not Modified
Run Code Online (Sandbox Code Playgroud)

请求标题:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie:undefined=0; poasterapp=s%3A4faaa6b1723e7c6fbd949083532c52598652547b.sNX%2BKOEed2TEQkQN7I7K5lgpoHMRpwerKFvUegMnTVI; _minerva_session=BAh7CUkiD3Nlc3Npb25faWQGOgZFRkkiJWEyM2Q0ZTViMWEyODBiYmFmODEwZTJhZmUwNWU5ODk5BjsAVEkiE3VzZXJfcmV0dXJuX3RvBjsARiIGL0kiCmZsYXNoBjsARm86JUFjdGlvbkRpc3BhdGNoOjpGbGFzaDo6Rmxhc2hIYXNoCToKQHVzZWRvOghTZXQGOgpAaGFzaHsGOgphbGVydFQ6DEBjbG9zZWRGOg1AZmxhc2hlc3sGOwpJIgAGOwBUOglAbm93MEkiEF9jc3JmX3Rva2VuBjsARkkiMUN0Uk56SXU0dUdIdzgwcFZJM3R0L2N4dlovRllTSGRrQ2o1R0VVanhIaVk9BjsARg%3D%3D--6bd89ce9d29e9bdcf56573f9a153dc663a8fe755
Host:localhost:3000
If-None-Match:"785d34e3998360353567fc710af123fb"
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

响应标题(不需要但仍然)

Cache-Control:max-age=0, private, must-revalidate
Connection:close
ETag:"785d34e3998360353567fc710af123fb"
Server:thin 1.5.0 codename Knife
Set-Cookie:_minerva_session=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJWEyM2Q0ZTViMWEyODBiYmFmODEwZTJhZmUwNWU5ODk5BjsAVEkiE3VzZXJfcmV0dXJuX3RvBjsARiIGL0kiEF9jc3JmX3Rva2VuBjsARkkiMUN0Uk56SXU0dUdIdzgwcFZJM3R0L2N4dlovRllTSGRrQ2o1R0VVanhIaVk9BjsARg%3D%3D--dfb3ce9f5c97463cfcd0229a133654e6cc606d98; path=/; HttpOnly
X-Request-Id:41a6f3062dc8bc36b7b3eae71dc5075d
X-Runtime:89.238257
X-UA-Compatible:IE=Edge
Run Code Online (Sandbox Code Playgroud)

现在如上所述,我在请求标头中看不到任何 X-Forwarded-For

阅读X-Forwarded-For维基页面让我觉得,它是由缓存服务器完成的(在我的情况下,我相信是我的ISP提供商)so am I safe to believe that the **X-Forwarded-For** headers is something that is added at the caching …

browser client-server http http-headers

11
推荐指数
3
解决办法
3万
查看次数

Ruby枚举器链接

在这个例子中,

[1, 2, 3].each_with_index.map{|i, j| i * j}
# => [0, 2, 6]
Run Code Online (Sandbox Code Playgroud)

我的理解是,由于each_with_index枚举器被链接到map,map行为类似于each_with_index在块内传递索引,并返回一个新数组.

为了这,

[1, 2, 3].map.each_with_index{|i, j| i * j}
# => [0, 2, 6] 
Run Code Online (Sandbox Code Playgroud)

我不知道如何解释它.

在这个例子中,

[1, 2, 3, 4].map.find {|i| i == 2}
# => 2
Run Code Online (Sandbox Code Playgroud)

我期待输出[2],假设它map被链接到find,map并将返回一个新数组.

另外,我看到了这个:

[1, 2, 3, 4].find.each_with_object([]){|i, j| j.push(i)}
# => [1]

[1, 2, 3, 4].each_with_object([]).find{|i, j| i == 3}
# => [3, []]
Run Code Online (Sandbox Code Playgroud)

你能让我知道如何解释和理解Ruby中的枚举链吗?

ruby list enumerator

9
推荐指数
1
解决办法
1318
查看次数

无法在ack中添加类型

每次我尝试在ack中添加类型似乎都失败,即在ack中添加一个type(log)

ack --type-set log:ext:log
ack: No regular expression found.
Run Code Online (Sandbox Code Playgroud)

要么

ack --type-add log:ext:log
ack: No regular expression found.
Run Code Online (Sandbox Code Playgroud)

任何人都有这个或它的线索

ack

8
推荐指数
2
解决办法
536
查看次数

如何连接到从bittorrent获得的对等体

我正在寻找在Ruby中构建一个bittorrent客户端(尽管语言在这里并不重要).

我读了一个BEP规范,它说查询/announce(没有DHT支持)跟踪器会给出一个当前为给定信息哈希连接的对等列表.

检查一下.我创建了一个torrent文件,我发现跟踪器返回我的机器的IP以及端口(我确认是我的机器上的Bittorrent客户端的运行端口,即Utorrent)

但是问题是Peers信息返回了我的ISP的IP即111.125.209.41(面向IP的公众,因为我在NAT后面).

现在我无法通过我的ISP 连接(通过TCP)到我的机器上运行的进程.

任何人都可以建议bitorrent如何在这方面工作,我该怎么做才能解决这个问题.

它可能会通过UDP Bittorrent使用UDP保持打孔不确定TCP上发生了什么.

bittorrent nat

8
推荐指数
1
解决办法
559
查看次数

在Rails管理员中添加自定义操作

似乎Rails管理员的文档确实很差我只能找到这个链接https://github.com/sferik/rails_admin/wiki/Custom-action

但是没有在这个链接中提到如何在rails中使用自定义操作和视图管理员只安装下一个插件.我没有足够的时间来查看rails管理代码并找出如何做到这一点

这里我想要的是可以在这里的屏幕截图中引用

rails-admin

6
推荐指数
1
解决办法
7458
查看次数

ArgumentError:已请求SMTP-AUTH但缺少用户名+ ActionMailer

每当我尝试使用actionmailer传递邮件时,我无法使用actionmailer发送邮件它报告错误

ArgumentError:SMTP-AUTH已请求但缺少用户名

这是奇怪的,因为我能够通过Telnet发送邮件但不使用ActionMailer

附加Telnet屏幕截图

这是我的SMTP设置

config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = {
    :address => '216.224.183.100',
    :port                 => 25,
    :domain               => '[domain_name]',
    :username             => "[username]",
    :password             => "[password]",
    :authentication       => 'plain',
   :enable_starttls_auto => true
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉通过邮件没有被发送

在此输入图像描述

smtp ruby-on-rails telnet actionmailer mailer

5
推荐指数
1
解决办法
7156
查看次数

OpenSSL :: SSL :: SSLError:hostname与服务器证书不匹配

今天早上突然我的HTTP客户端(HTTParty)抛出了一个错误 OpenSSL::SSL::SSLError: hostname does not match the server certificate

首先,我无法理解,今天我们几乎整天都在过去2年没有任何问题地拨打api电话

其次我不明白如何解决它,因为它是HTTParty内部的

我唯一知道的是我无法SSL_CERT_FILE进入,ENV但据说我已经在我的/etc/ssl/certs(SSL_CERT_DIR)中列出了ROOT CA

这是我的输出

irb(main):001:0> require "openssl"
=> true
irb(main):002:0> puts OpenSSL::OPENSSL_VERSION
OpenSSL 1.0.1 14 Mar 2012
=> nil
irb(main):003:0> puts "SSL_CERT_FILE: %s" % OpenSSL::X509::DEFAULT_CERT_FILE
SSL_CERT_FILE: /usr/lib/ssl/cert.pem
=> nil
irb(main):004:0> puts "SSL_CERT_DIR: %s" % OpenSSL::X509::DEFAULT_CERT_DIR
SSL_CERT_DIR: /usr/lib/ssl/certs
Run Code Online (Sandbox Code Playgroud)

最后,正如所说Openssl上没有任何变化,代码明智的唯一的事情就是openssl版本引用HEARTBLEED漏洞 的补丁

请注意,我们只修补openssl版本,但这didnt recompile the RUBY可能是一个问题

有问题的Ruby是 ruby 1.9.3p327

Net :: HTTP库是版本httparty-0.13.0

注意: - 作为解决方案,我没有在OPENSSL中使用VERIFY_NONE选项

ruby ssl openssl httparty

5
推荐指数
1
解决办法
7507
查看次数

为什么HAML在ERB和ERUBIS时不会抛出编码ISSUE

请遵循以下代码:

__ENCODING__
# => #<Encoding:UTF-8>

Encoding.default_internal
# => #<Encoding:UTF-8> 

Encoding.default_external
# =>  #<Encoding:UTF-8> 
Run Code Online (Sandbox Code Playgroud)

案例1:HAML抛出 Encoding::UndefinedConversionError

string = "j\xC3\xBCrgen".force_encoding('ASCII-8BIT')

string.encoding
# =>  #<Encoding:ASCII-8BIT>  

Haml::Engine.new("#{string}").render
## => Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8

ERB.new("<%= string %>").result(binding)
# => "jürgen"
# => Resulting encoding is #<Encoding:UTF-8> 

Erubis::Eruby.new("<%= string %>").result(binding)       
# => "j\xC3\xBCrgen"
# => resulting encoding is #<Encoding:ASCII-8BIT>
Run Code Online (Sandbox Code Playgroud)

案例2:HAML不会抛出错误

string = "Ratatouille".force_encoding('ASCII-8BIT')

string.encoding
# => #<Encoding:ASCII-8BIT>

Haml::Engine.new("#{string}").render
## => "Ratatouille\n"
## => resulting encoding is #<Encoding:UTF-8>    

ERB.new("<%= string %>").result(binding)
# => "Ratatouille"
# …
Run Code Online (Sandbox Code Playgroud)

ruby haml encoding padrino

5
推荐指数
1
解决办法
578
查看次数

如何验证HTTP重定向绑定的SAML签名

我通过HTTP重定向绑定收到SAML请求,SAML请求的内容如下所示

{ "SigAlg"=> " http://www.w3.org/2000/09/xmldsig#rsa-sha1 ", "SAMLRequest"=>"lVLLaoQwFP0VyT5jEqPG4AiFoSDMtNApXXQzxDxaQRObRDqfX3XoolAKXd7DPQ/uuXUQ4zDxo3tzc3zSH7MOMWkPe3DpcixzVVVQl4RBqoiCncEYEmkoY7k00hCQvGgfemf3gOwQSNoQZt3aEIWNC4RwCRGGiD6jkmPMs2KHUPYKksPi0lsRN + Z7jFPgafqpvejtbtQpSK7jYAPfsu3B7C13IvSBWzHqwKPk57vTkS + WfPIuOukG0NSbub9R/yaJELRfzUGzrhmtFut15qdeeheciY926K2u05toUz8sIu0huXd + FPFv9RXpFTTbKp/WA4WobQT/jEYrykwhNaQ66yDNMwY7wijEtMCmysqqo6xOb8Ga + tbjWYe1jtYqfW0uCucoYwWCHS3F0kRGoajWTpAiiJRZJRmu01 Y3 + CPt2i + AA =="}

它还具有Signature值

WkDaGzC6vPTlzh + EnFA5/8IMmV7LviyRh2DA5EHF0K0nl + xzBlKfNCYRnunpwoEvGhereGdI5xBpv + mc9IguiCaLZSZjDh6lIDdpvctCnmSNzORqzWQwQGeZ9vjgtCLjUn35VZLNs3WgEqbi2cL + ObrUDS2gV1XvBA3Q3RRhoDmi + XE89Ztnd1cNpR3XdA + EL2ENbMI2XAD9qSgMufUJY/3GBBpT7Vg1ODtPxBudq + sXrgPh/+ + WtUUitLkkfC8tdRTCS1EZPv h27I5g/VNza23Xl8w2HdAuYP0F2FjREo8VV2aUtaOUd/jAF9 + bfkGV93y1PzFttLxdBbFoxp6qBg ==

但我不明白如何验证此签名是否正确.

有关SAML绑定的第3.4.4.1节https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf

To construct the signature, a string consisting of the concatenation of the RelayState (if present),
SigAlg, and SAMLRequest (or SAMLResponse) query string parameters (each one URLencoded)
is constructed in one of the following ways …
Run Code Online (Sandbox Code Playgroud)

xml saml-2.0 xml-signature itfoxtec-identity-saml2

5
推荐指数
1
解决办法
7936
查看次数

Errno::EBADF: ruby​​ net/http 错误的文件描述符

建立 HTTP 连接时会导致什么导致返回EBADF(错误的文件描述符)。

这是我的以下代码,其中建立了 HTTP 连接。虽然现在错误很少(发生得很少)但是在我将这些错误进行救援之前,我需要了解EBADF的原因是什么

def make_http_request(url, headers={})
  uri = URI(url)
  Net::HTTP.start(uri.host, uri.port) do |http|
    req = Net::HTTP::Get.new(uri, headers)
    resp = http.request(req)
    if resp.code.to_i != 200
      logger.error "Retrieve #{resp.code} with #{url} and #{headers}"
      return false
    end
    return resp.body
  end
rescue SocketError, Net::ReadTimeout, Errno::ECONNREFUSED => e
  logger.error "make_http_request #{url} with #{headers} resulted in #{e.message} \n #{e.backtrace}"
  return false
end
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,connect syscall即收到了在该给定时间点无效的 FD。但还是无法理解怎么会这样。

如果它有帮助,该代码可用于使用多线程运行的应用程序。

简而言之,上述方法的定义是这样的……

module Eval
  def make_http_request(url, headers={})
    ...
    ...
    ..
  end

  def request_local_endpoint(url, …
Run Code Online (Sandbox Code Playgroud)

ruby net-http

5
推荐指数
0
解决办法
1032
查看次数