[解決済み] シンプルなHTTPサーバでアクセス制御を有効にする
質問
私は、非常に単純なHTTPサーバのための以下のシェルスクリプトを持っています。
#!/bin/sh
echo "Serving at http://localhost:3000"
python -m SimpleHTTPServer 3000
私は、どのようにすれば
を有効にしたり、CORS ヘッダ
のように
Access-Control-Allow-Origin: *
のようなCORヘッダをこのサーバに送信しますか?
どのように解決するのですか?
残念ながら、シンプルな HTTP サーバーは本当にシンプルなので、特に送信するヘッダーについてはカスタマイズすることができません。しかし、シンプルな HTTP サーバーを自分で作成することは可能で、ほとんどの
SimpleHTTPRequestHandler
のほとんどを使って、自分でシンプルな HTTP サーバを作成し、必要なヘッダを追加するだけです。
そのためには、単にファイル
simple-cors-http-server.py
(または何でも)を作成し、使用しているPythonのバージョンに応じて、次のコードのいずれかを内部に記述します。
そうすると、あなたは
python simple-cors-http-server.py
を実行すると、変更したサーバーが起動し、すべてのレスポンスにCORSヘッダが設定されます。
を使用すると
シバング
で、ファイルを実行可能にして PATH に入れれば、あとは
simple-cors-http-server.py
を使って実行することもできます。
Python 3 ソリューション
Python 3 は
SimpleHTTPRequestHandler
と
HTTPServer
から
http.server
モジュール
でサーバを実行します。
#!/usr/bin/env python3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import sys
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
Python 2ソリューション
Python 2は
SimpleHTTPServer.SimpleHTTPRequestHandler
となっており
BaseHTTPServer
モジュール
でサーバを実行します。
#!/usr/bin/env python2
from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
BaseHTTPServer.test(CORSRequestHandler, BaseHTTPServer.HTTPServer)
Python 2 & 3 ソリューション
Python 3とPython 2の両方の互換性が必要な場合、両方のバージョンで動作するこのポリグロットスクリプトを使用することができます。これは最初にPython 3の場所からインポートしようとし、それ以外はPython 2にフォールバックします。
#!/usr/bin/env python
try:
# Python 3
from http.server import HTTPServer, SimpleHTTPRequestHandler, test as test_orig
import sys
def test (*args):
test_orig(*args, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
except ImportError: # Python 2
from BaseHTTPServer import HTTPServer, test
from SimpleHTTPServer import SimpleHTTPRequestHandler
class CORSRequestHandler (SimpleHTTPRequestHandler):
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
test(CORSRequestHandler, HTTPServer)
関連
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Access-Control-Allow-Origin複数オリジンのドメイン?
-
[解決済み] REST APIからデータを取得しようとしたときに、要求されたリソースに'Access-Control-Allow-Origin'ヘッダーが存在しない。
-
[解決済み] プリフライト要求に対する応答がアクセス制御チェックを通過しない
-
[解決済み] CORSです。資格情報フラグが true の場合、Access-Control-Allow-Origin でワイルドカードを使用できない。
-
[解決済み】Access-Control-Allow-OriginでOriginが許可されない。
-
[解決済み】「アクセス制御-許可-オリジン」がない - Node / Apacheのポートの問題
-
[解決済み】http://localhost CORS originが機能しないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
python implement mysql add delete check change サンプルコード
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Python入門 openを使ったファイルの読み書きの方法
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない