403は「入っちゃダメ」と言われている状態
Web上で何かを取得しようとしたとき、403 という数字を見かけることがあります。これはHTTPのステータスコードと呼ばれるもので、ざっくり言えば「サーバーからの返事の種類を表す番号」です。403は、そのなかでも「リクエストは届いたけれど、あなたにこれを見せるつもりはありません」という意味の返事にあたります。英語では Forbidden(禁じられている)と呼ばれます。
身近な例で言うと、会員制のジムの入口に立っているようなものです。建物の場所は分かっているし、ドアの前まで行けている。受付の人もあなたを認識している。それでも「会員証がないので中には入れません」と断られる。403はまさにこの状態です。道に迷って建物が見つからないのとは違います。
404とどう違うのか
初心者がいちばん混乱しやすいのが、404との区別です。数字が近いので同じようなものだと思われがちですが、意味はかなり違います。
404 Not Found
そもそも探しているものが見つからない。URLの打ち間違い、ページが削除された、といったケース。「そんな部屋はここにありません」という返事です。
403 Forbidden
探しているものは存在しているが、見せてもらえない。「部屋はあるけれど、あなたには鍵を渡しません」という返事です。
つまり403が返ってきた時点で、相手のサーバーはちゃんと動いていて、こちらのリクエストも届いていることがわかります。壊れているわけではないんですね。むしろ意図的に拒否されている、と考えたほうが正確です。
どんなときに403に出会うか
普通にブラウザでWebを見ているぶんには、403はそこまで頻繁に見るものではありません。よく遭遇するのは、次のような場面です。
- ログインが必要なページに、ログインしないまま直接アクセスしたとき
- ログインはしているが、その操作をする権限が自分のアカウントにないとき(一般ユーザーが管理画面を開こうとした、など)
- サーバー側でアクセス元を制限していて、その条件から外れているとき
- プログラムやツールから自動的にアクセスして、サーバーに「機械的なアクセス」とみなされたとき
最後のケースは、コマンドラインからWebページを取得するようなことをしていると意外とよく踏みます。ブラウザで開けば普通に見られるページなのに、ツール経由だと403、というパターンです。「自分のネットワークが壊れたのか?」と焦りがちですが、多くの場合はサーバー側が意図的にそういう挙動をしています。
403が出たときの考え方
403に遭遇したら、まず「これは自分側で直せる種類のエラーなのか」を切り分けるのがおすすめです。
認証や権限の問題であれば、ログインし直したり、必要な権限を持つアカウントで試したりすることで解決します。一方、サーバー側がそもそもそのアクセスを許可していない場合は、こちら側で工夫してもどうにもならないことが多いです。何度もリトライして無理やり通そうとするのは、相手のサーバーに迷惑をかけるだけでなく、さらに強い制限を受ける原因にもなります。
覚えておきたいポイント
403は「拒否されている」というサインであって、故障ではありません。数字の頭が4で始まるステータスコードは、おおまかに言うと「リクエストする側に何か問題がある」というグループです。500番台のようにサーバー内部で異常が起きているケースとは性質が異なります。
エラーメッセージのなかに403という数字を見つけたら、「アクセス権まわりを疑えばいい」とアタリがつけられる。それだけでもトラブルシューティングのスピードはかなり変わります。
このページは役に立ちましたか?