注意:请阅读完整的问题
我试图理解为什么每次请求页面时浏览器都没有向我显示任何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 …
在这个例子中,
[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中的枚举链吗?
每次我尝试在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)
任何人都有这个或它的线索
我正在寻找在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上发生了什么.
似乎Rails管理员的文档确实很差我只能找到这个链接https://github.com/sferik/rails_admin/wiki/Custom-action
但是没有在这个链接中提到如何在rails中使用自定义操作和视图管理员只安装下一个插件.我没有足够的时间来查看rails管理代码并找出如何做到这一点
这里我想要的是可以在这里的屏幕截图中引用
每当我尝试使用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)
任何人都可以告诉通过邮件没有被发送

今天早上突然我的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选项
请遵循以下代码:
__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) 我通过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) 建立 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 ×4
ack ×1
actionmailer ×1
bittorrent ×1
browser ×1
encoding ×1
enumerator ×1
haml ×1
http ×1
http-headers ×1
httparty ×1
list ×1
mailer ×1
nat ×1
net-http ×1
openssl ×1
padrino ×1
rails-admin ×1
saml-2.0 ×1
smtp ×1
ssl ×1
telnet ×1
xml ×1