日常の徒然

日々の事、技術的、趣味とかについて書いていこうかと

Net::HTTPでBasic認証のかかっているページヘアクセスしたら400 Bad Requestって言われた時の対処法

最初はどんなことを書こうかと思ったけど、そんなことグダグダ考えるのも面倒だったので、今やっているタスクで詰まったことについて。

 

やろうとしたこと:unicornがどの程度のアクセスをさばけるのかベンチマークを取って調査。

 

詰まったこと:ターミナルで直接アクセスしたら、400 Bad Request言われた、、泣

ちなみに、400エラーは以下が原因。自分のサイトなのに。。

クライアント(主にウェブブラウザ)からウェブサーバーに向けて送信したリクエストに問題があるため、ウェブサーバー側がリクエストを処理することができない場合に発生するエラー。殆どの場合ユーザー側に問題がある

                        引用元:[対処法]400 Bad Request

 

原因:結構単純。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)

ほぼリンク先通りですね。
原因わかってから書き方見つけるまで結構かかったので、同じようなところで詰まっている人の参考になればと思います!