問題タブ [basehttprequesthandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - BaseHTTPServer は Web ページを 1 回しか提供しない
Python で基本的な Web サーバーをセットアップする方法を理解しようとしていますが、非常に困難です。
私の主な問題は、サーバーに Web ページを 1 回しか提供できないことです。html はブラウザにメッセージを表示し、Javascript はコンソールに別のメッセージを表示します。
サーバーを起動してhttp://127.0.0.1:8080に移動すると、両方のメッセージが表示され、すべて問題ありません。ただし、2 つ目のブラウザー タブを開いて再度そこに移動すると、問題が発生します。ターミナルで GET HTTP リクエストを取得しますが、GET Javascript リクエストは取得しません。また、ブラウザ ウィンドウにもコンソールにも何も表示されません。
私は何を間違っていますか?任意の提案をいただければ幸いです。
ここに私のPythonコードがあります:
python - Python: BaseHTTPRequestHandler から POST 応答を取得する
BaseHTTPRequestHandler を使用して、Python で POST 要求の後に応答を取得しようとしています。問題を単純化するために、2 つの PHP ファイルがあります。
jquery_send.php
jquery_post.php
jquery_send.phpを使用すると、POST リクエストを jquery_post.php に送信し、リクエストを正常に取得できます。ここで、 POST リクエストを jquery_post.php の代わりに Python BaseHTTPRequestHandlerに送信して、同じ結果を得たいと考えています。私はテストのためにこのPythonコードを使用しています:
POST リクエストは取得できますが、 jquery_send.phpでレスポンス ("Received!") を取得できません。私は何を間違っていますか?
編集:
つまり、BaseHTTPRequestHandler を使用して POST 要求を取得し、応答を送信するこの小さな Python コードがあります。
curlでレスポンスを取得できます
しかし、Webページからajax/jqueryを使用して取得することはできません(サーバーはPOSTリクエストを正しく受け取りますが、Webページは応答を取得しません)。どうすればいいですか?
python - Python HTTPサーバーから関数を呼び出す方法は?
アプリケーションの 1 つに Web インターフェイスを提供したいと考えています。BaseHTTPRequestHandler
これを実現するために、パッケージからBaseHTTPServer
( を呼び出すクラスに)サブクラス化し、HTTP要求_RequestHandler
用の独自のハンドラーを実装します。HEAD / GET / POST / PUT
「通常のファイル」のリクエストを受け取ると、それを開き、ファイル システムから読み取り、ブラウザに提供します。それはうまくいきます。ただし、Web インターフェースであるため、特定の要求をアプリケーションのバックエンドに伝えたいと考えています。これを行うには、サーバーにインターフェイスを提供してもらいたいです。このインターフェイスを介して、特定の URL のコールバック関数を (バックエンドで) 登録できます。これは、登録された URL にリクエストが着信したときに呼び出され、リクエストのヘッドとボディを渡します。そのURLに登録されたリクエストハンドラ(=コールバック関数)に
私はe。このようなことができるようになりたいです。
これで、誰かがブラウザで登録されていない任意の URL を要求すると、Web サーバーは指定されたファイル (「Web ルート」に関連する) をロードして配信します。
原則としてこれを実装する方法を知っています。異なる方法で処理する必要がある URL を辞書に配置します。リクエストごとに、リクエストされた URL がディクショナリにあるかどうかを確認します。はいの場合は、リクエスト データ (HTTP ヘッダーとボディ) を "リクエスト オブジェクト" に入れ、その URL に登録されているコールバック関数を呼び出して、そのリクエスト オブジェクトを渡します。コールバック関数から応答オブジェクトを取得し、その内容 (HTTP ヘッダーと本文) を抽出してクライアントに提供します。URL が「特別に処理される」ディクショナリにない場合は、ファイル システムから (「Web ルート」を基準にして) ファイルをロードし、それを提供します。
問題は、Web サーバーを実行するために、このようなことをしなければならないことです。
ここでの問題は、 のインスタンスであるオブジェクトを のコンストラクターに渡すことができないことです。クラス自体に合格する必要があります。インスタンスを作成しますが、これにはアクセスできません。そのため、メソッドを呼び出すことができず、コールバック関数を登録できません (または、コールバック関数の辞書をコンストラクターなどに渡します)。_RequestHandler
HTTPServer
HTTPServer
私に何ができる?カスタム データ オブジェクトをインスタンスに取得する何らかの方法があるはず_RequestHandler
ですよね? つまり、そうでない場合、そのサーバーのものはすべて深刻に制限されているように見えます. のインスタンスにアクセスできないため、どうすればそれができるかわかりません_RequestHandler
。それは私のためにクラスによって作成されHTTPServer
、外部には渡されません。
助言がありますか?
python - Python BaseHTTPRequestHandler: JSON で応答する
BaseHTTPRequestHandler
メソッドを継承して実装する Python クラスがありdo_POST
ます。
私は現在、メソッドの最後に次のコマンドを使用して、200 などの整数ステータスでのみ応答することに成功しています。
応答の一部として文字列も送信しようとしています。どうすればいいですか?