Net::HTTPでBasic認証のかかっているページヘアクセスしたら400 Bad Requestって言われた時の対処法
最初はどんなことを書こうかと思ったけど、そんなことグダグダ考えるのも面倒だったので、今やっているタスクで詰まったことについて。
やろうとしたこと:unicornがどの程度のアクセスをさばけるのかベンチマークを取って調査。
詰まったこと:ターミナルで直接アクセスしたら、400 Bad Request言われた、、泣
ちなみに、400エラーは以下が原因。自分のサイトなのに。。
クライアント(主にウェブブラウザ)からウェブサーバーに向けて送信したリクエストに問題があるため、ウェブサーバー側がリクエストを処理することができない場合に発生するエラー。殆どの場合ユーザー側に問題がある。
原因:結構単純。basic認証をかけたページにアクセスするのにその辺の記述をしてなかった。
なので、ユーザー名とパスワードを書いたらいい感じにいけた。
url = "www.hogehoge.basic.jp"
user = "basic_user"
password = "basic_password"
Net::HTTP.start(url) {|http|
Benchmark.bm 10 do |r|
r.report "Top" do
50.times do
req = Net::HTTP::Get.new('/')
req.basic_auth(user, password)
response = http.request(req)
end
end
end
}
参考:library net/http (Ruby 1.8.7)
ほぼリンク先通りですね。
原因わかってから書き方見つけるまで結構かかったので、同じようなところで詰まっている人の参考になればと思います!