http post -从G-WAN/Ruby获取post数据



是否有办法从G-WAN Ruby获得POST数据?

我试过:

ENV.each do |k,v|
  puts "#{k} => #{v} <br/>"
end
exit(200)

并使用:

进行测试
curl -d 'test2=1' 'http://127.0.0.1:8080/?test.rb&test=1' | gunzip -

但是没有post data (test2)显示:

GATEWAY_INTERFACE => CGI/1.1 <br/>
CONTENT_TYPE => urlencoded <br/>
REMOTE_HOST => 127.0.0.1 <br/>
USER => lab-hci-48 <br/>
REMOTE_ADDR => 127.0.0.1 <br/>
QUERY_STRING => test.rb&test=1 <br/>
CONTENT_LENGTH => 7 <br/>
PATH_TRANSLATED => /home/lab-hci-48/gwan/0.0.0.0_8080/#0.0.0.0/csp <br/>
REQUEST_URI => POST /?test.rb&test=1 <br/>
SERVER_SOFTWARE => G-WAN <br/>
PATH => /home/lab-hci-48/.rvm/gems/ruby-2.1.1/bin:/home/lab-hci-48/.rvm/gems/ruby-2.1.1@global/bin:/home/lab-hci-48/.rvm/rubies/ruby-2.1.1/bin:/home/lab-hci-48/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games <br/>
LANG => en_US.UTF8 <br/>
SERVER_PROTOCOL => HTTP/1.1 <br/>
PATH_INFO => / <br/>
SHELL => /bin/bash <br/>
REQUEST_METHOD => POST <br/>
PWD => /home/lab-hci-48/gwan <br/>
SERVER_PORT => 8080 <br/>
SCRIPT_NAME => test.rb <br/>
SERVER_NAME => 0.0.0.0 <br/>

是否有其他变量,我应该检查以获得POST数据?

在我的ruby脚本中,我使用以下代码获取数据:

# Get arguments
k = ""
@params = {}
ARGV.each do|a|
  if a.split("=").size > 1    
    a = a.split("=")
    @params[a[0]] = a[1]
  else
    if k == ""      
      k = a
    else
      @params[k] = a
      k = ""
    end
  end
end

它将像在Rails中一样创建一个params变量;)

是否有其他变量,我应该检查以获得POST数据?

REQUEST_METHODHTTP_POST时,CONTENT_LENGTHCONTENT_TYPE都可以让您找到POST实体的属性(与HTTP_PUT相同)。

X_HTTP_HEADERS值(去年添加的)使查找HTTP标头的结尾(POST实体驻留的地方)变得更容易和更快-但是查找HTTP标头的结尾(双CRLF)可以在Ruby脚本中完成,从REQUEST_URIQUERY_STRING开始。

/csp/hello.rb G-WAN为例,列出查询参数:

   # list QUERY PARAMETERS, if any:
   #
   # GET http://10.10.200.80/?hello.rb&arg1=123&arg2=456
   arg: arg1=123
   arg: arg2=456
   ARGV.each do|a|
     puts "arg: #{a}<br>"
   end

相关内容

  • 没有找到相关文章

最新更新