有没有办法从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 -
但没有显示帖子数据(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数据?
答案 0 :(得分:1)
在我的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变量;)
答案 1 :(得分:0)
我是否应检查其他变量以获取POST数据?
当REQUEST_METHOD
为HTTP_POST
时,CONTENT_LENGTH
和CONTENT_TYPE
都会让您找到POST
实体的属性(同一故事{{1} }})。
HTTP_PUT
值(去年添加)可以更轻松,更快速地找到HTTP标头的末尾(X_HTTP_HEADERS
实体所在的位置) - 但查找HTTP标头的末尾(a double POST
)可以在Ruby脚本中完成,从CRLF
或REQUEST_URI
开始。
QUERY_STRING
G-WAN示例显示了如何列出查询参数:
/csp/hello.rb