質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

2回答

10113閲覧

サーバーサイドプログラムからのHTTPリクエストで403Forbiddenになります

gutora123

総合スコア18

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2017/04/03 03:35

###前提・実現したいこと
現在、AWS(Amazon Web Service)のEC2を用いて、サーバーサイドプログラムを作っております。
そのサーバーサイドプログラム中には
http://www.a-quest.com/demo/kanji2roman_rd.php?str=%E3%81%82%E3%81%82
にGETリクエストする箇所があるのですが、403エラー(Forbidden)となってしまいます。
このプログラムをパソコン中のEclipseから実行すると動作するのですが、AWSにアップロードするとエラーになります。

Webサイトで調べたところ「403エラー(Forbidden)となってしまうのはサイト管理者の設定が主な理由」とあったのですが、こちらの設定でどうにかなるものではないのでしょうか?
また、送信元がパソコンからのリクエストではなくサーバプログラムからのリクエストであるとどうやって判断しているのでしょうか?
ご教示お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

403 エラーは、リクエストが示すものは理解したが、返すことは拒否する という意味です。
.php を php として処理できないか、.htaccess か何かでアクセスを拒否するようにしているか、いずれにせよWebサーバの設定に起因します。

  • Web サーバは php を処理できる設定になっているか?(apache なら mod_php とか入ってるか)
  • そもそも php はインストールされているか

あたりですかねえ。

※図書館に例えると、
403は「その本は書架にあるけど、閲覧禁止です」で、
404は「その本は所蔵していません」になります。
500は「その本は破損している(貸し出せる状態にない)ので今貸出・閲覧できません」かな?

投稿2017/04/03 04:11

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Webサイトで調べたところ「403エラー(Forbidden)となってしまうのはサイト管理者の設定が主な理由」とあったのですが、こちらの設定でどうにかなるものではないのでしょうか?

多くの場合、その認識で大丈夫です。
管理者が意図的にそういう設定をしているor設定を誤ったなどが多いです。

また、送信元がパソコンからのリクエストではなくサーバプログラムからのリクエストであるとどうやって判断しているのでしょうか?

HTTPのリクエストには、送信元のグローバルIPとリファラというものがあります。
送信元のグローバルIPでどこから送信されたか。
リファラでどのページからリクエストされたかを判断しています。


本件に関してですが

自分のPCで上記URLに対してリクエストするHTMLを作成したところ表示されました。
しかし、EC2からCurl [URL]を叩くと403 Forbiddenを返されました。

ここから推測しますと、サーバの設定でAWSのIPアドレス帯域からのリクエストが
許可されていないのではないかと思います。

AWSのEC2で使われるグローバルIPは、アメリカのIPアドレスになりますが

kanji2roman_rd.phpで使われているサーバの設定で
JP_IPのIPアドレス以外からのリクエストを拒否していると思います。

投稿2017/04/03 05:58

編集2017/04/03 06:01
lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問