0

对 Ruby 来说是全新的。我正在参考 Curb 文档并尝试在 curl 中提交使用安全令牌的请求。以下是我的传统请求的标题的 3 个部分:

  1. 我的安全令牌
  2. 1234567890
  3. 网站.com

如上所示,我将如何构建 Curb 以提交名称、值和评论?

我开始的内容:

c = Curl::Easy.new("http://website.com") do |curl| 
  curl.headers["Name"] = "My-Security-Token"
  curl.headers["Value"] = "1234567890"
  curl.headers["Comment"] = "website.com"
  curl.verbose = true
end

c.perform
4

2 回答 2

1

这是我的标题的 3 个部分以及我的传统请求

  1. 我的安全令牌
  2. 1234567890
  3. 网站.com

标头由名称/值组成,因此您的描述没有任何意义。

看起来您的标题名称应该是:

 My-Security-Token

它的价值应该是:

 1234567890

要发出GET request(您没有提到您正在发出的请求类型)并指定该标头,您可以这样做:

require 'curb'

http = Curl.get("http://website.com/") do |http| 
  http.headers["My-Security-Token"] = "1234567890"
end

puts http.body_str[0..249]  #Output the first 250 characters of the response

如果你想使用详细模式,它会显示实际的请求和响应,你可以这样做:

require 'curb'

c = Curl::Easy.new("http://www.google.com/") do |curl| 
  curl.headers["My-Security-Token"] = "1234567890"
  curl.verbose = true
end

c.perform  #Outputs the request and the response
puts c.body_str[0..249]  #body_str => the body of the response

输出:

* About to connect() to www.google.com port 80 (#0)
*   Trying 74.125.28.147... * Connected to www.google.com (74.125.28.147) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
My-Security-Token: 1234567890  #***HERE IS YOUR CUSTOM HEADER****

< HTTP/1.1 200 OK
< Date: Tue, 03 Mar 2015 00:14:42 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=479a8fa626097193:FF=0:TM=1425341682:LM=1425341682:S=5kflGPOAzEx-uMWb; expires=Thu, 02-Mar-2017 00:14:42 GMT; path=/; domain=.google.com
< Set-Cookie: NID=67=Eim3D__PFGbpSWdcIH9IPhkuDEVMFjN4ShU9gA6Z_rMryMoI6nv--sIjk_E00_EpMfSe3RkPO5dYjV7yGTXT3oMLX-t7FsrKSJmF7-OffAuLKrr5KfV1IZzL9yaJQKiB; expires=Wed, 02-Sep-2015 00:14:42 GMT; path=/; domain=.google.com; HttpOnly
< P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Alternate-Protocol: 80:quic,p=0.08
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< 
* Expire cleared
* Connection #0 to host www.google.com left intact
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many specia

如果您实际上希望自定义标头是:

Name: My-Security-Token
Value: 1234567890
Comment: website.com

...然后你可以这样做:

require 'curb'

c = Curl::Easy.new("http://www.google.com/") do |curl| 
  curl.headers["Name"] = "My-Security-Token"
  curl.headers["Value"] = "1234567890"
  curl.headers["Comment"] = "website.com"
  curl.verbose = true
end

c.perform
puts c.body_str[0..249]

...这将产生如下输出:

* About to connect() to www.google.com port 80 (#0)
*   Trying 74.125.28.105... * Connected to www.google.com (74.125.28.105) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
Name: My-Security-Token   #HERE ARE YOUR HEADERS
Value: 1234567890         #HERE
Comment: website.com      #HERE
...
...

如果以上都没有满足您的要求,那么与其描述您的请求,不如发布您的实际“传统”请求?如果你不知道怎么做,请搜索谷歌。

于 2015-03-02T23:15:01.557 回答
0

如上所示,我将如何构建 Curb 以提交名称、值和评论?

再想一想,看起来 Name、Value 和 Comment 是单个 http 标头的组件:


通过用括号将注释文本括起来,可以将注释包含在某些 HTTP 标头字段中。仅允许在
包含“comment”作为其字段值定义的一部分的字段中使用注释。
在所有其他字段中,括号被视为字段
值的一部分。

如果是这种情况,您可以像这样创建自定义标头:

require 'curb'

c = Curl::Easy.new("http://www.google.com/") do |curl| 
  curl.headers["My-Security-Token"] = "1234567890 (website.com)"
  curl.verbose = true
end

c.perform  #Outputs the request and the response
puts c.body_str[0..249]  #body_str => the body of the response

--output:--
* About to connect() to www.google.com port 80 (#0)
*   Trying 74.125.28.104... * Connected to www.google.com (74.125.28.104) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*
My-Security-Token: 1234567890 (website.com)  #***YOUR CUSTOM HEADER****
...
...
于 2015-03-04T05:40:33.410 回答