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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

2787閲覧

pythonでのwebアプリ、Error code: 403でうまくいかない

suzunox

総合スコア80

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/12 15:06

pythonでwebアプリを作ろうと思っているのですが、ブラウザを開いてみるとError code: 403と出て正しく表示されません。そこにはこう書いてありました。


Message: CGI script is not a plain file ('/cgi-bin/').
Error code explanation: HTTPStatus.FORBIDDEN - Request forbidden -- authorization will not help.


webアプリのディレクトリは次の通りです。flaskTestと書いてありますが今はまだflaskを使ってません。

+ <flaskTest> | - <cgi-bin> | | - test.py

test.pyの内容です。

python3

1#!/usr/bin/env python3 2 3print('Content-Type: text/html; charset=utf-8') 4print('') 5print('<html><head><meta charset="utf-8"></head><body>') 6print('<p>hahaha</p>') 7print('</body></html>')

エラーの内容にauthorizationと書いてあったので、アクセス権限を一応調べてみたのですが、大丈夫でした。(Fと表示されるとフルコントロールという意味です。)ちなみにWindows10powershellを使ってます。

powershell

1cgi-bin> cacls test.py 2NT AUTHORITY\SYSTEM:F 3BUILTIN\Administrators:F 4DESKTOP-4AV1Q9O\suzun:F

そして、サーバーを立ててみました。

powershell

1flaskTest> python -m http.server --cgi 2Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

そして、**http://localhost:8000/cgi-bin/**にアクセスした結果、エラーが出たという流れです。

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

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

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

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

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

suzunox

2019/07/13 00:54

できました!!!!!ありがとうございます!!!!!
set0gut1

2019/07/13 00:56

あ、まじですか。アンサーさせてください。
suzunox

2019/07/13 01:01

どうぞ!!!!
suzunox

2019/07/13 01:04

未解決にし直したのでアンサーできます。
guest

回答2

0

ベストアンサー

http://localhost:8000/cgi-bin/ ではなく
http://localhost:8000/cgi-bin/test.py にアクセスすると大丈夫なはずです。


以下、ちゃんと調べきれてないのですが一応書いておきます。

手元で動かしてみた結果、 python3 の http.server で index.html みたいなファイルが存在しない状態でディレクトリにアクセスするとディレクトリの内容が表示されるんですが、 cgi オプション付きで起動して(確認した範囲では) /cgi-bin/ にアクセスしたときのみ 403 になってました。
おそらくスクリプトの構成を隠すための措置なのだろうなと思いますが詳細未調査です。

ドキュメント: https://docs.python.org/3/library/http.server.html

Note that CGI scripts will be run with UID of user nobody, for security reasons. Problems with the CGI script will be translated to error 403.

という記述が末尾にあり、これが 403 を返す現象について言ってそうな雰囲気はしていました。

投稿2019/07/13 01:11

編集2019/07/13 01:12
set0gut1

総合スコア2413

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

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

0

set0gut1さんの質問に書いてあった通りです。
http://localhost:8000/cgi-bin/test.pyで検索すればみれます。

投稿2019/07/13 00:56

編集2019/07/13 00:57
suzunox

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問