ブラウザ ←→ sv1.rb ←→ sv2.rb
機能分離とhttp学習の為にあえてsv2.rbを作りました
ブラウザはsv1.rbを呼び出してformよりsv2.rbにpostデータを送ります
sv2.rbではpostデータを加工してsv1.rbに戻しているつもりです
問題の現象としては
・sv1.rbに戻したつもりなのにブラウザのurl欄にはlocalhost/sv2.rbとなります
・最初の送信(send)ではpostデータが表示されますが2度目に押すとサーバーエラーとなります
sv2.rbでのpostの方法が怪しいと思うのですが私の理解の限界を超えました
どのようなコードにすれば解決するでしょうか
環境
ruby1.9.3,windows,xampp
-------------------- sv1.rb #!/usr/local/bin/ruby #encoding:utf-8 print "Content-type: text/html\n\n" # require"cgi" cgi=CGI.new ret=cgi["pid"] # fm=%Q[<!DOCTYPE html> <html><head></head><body>sv1.rb <form method="POST" action="./sv2.rb"> <input type="text" name="pid" value="testdata"> <input type="submit" value="send"> </form> #{ret} </body></html> ] print fm -------------------- sv2.rb #!/usr/local/bin/ruby #encoding:utf-8 # require"net/http" require"uri" require"cgi" cgi=CGI.new #ret=cgi["pid"] ret="pid=testtest" # ref=ENV['HTTP_REFERER'] uri=URI.parse(ref) http=Net::HTTP.new(uri.host,uri.port) res=http.post(uri.path,ret) cgi.out{res.body}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。