問題タブ [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.

0 投票する
1 に答える
694 参照

python - BaseHTTPServer は Web ページを 1 回しか提供しない

Python で基本的な Web サーバーをセットアップする方法を理解しようとしていますが、非常に困難です。

私の主な問題は、サーバーに Web ページを 1 回しか提供できないことです。html はブラウザにメッセージを表示し、Javascript はコンソールに別のメッセージを表示します。

サーバーを起動してhttp://127.0.0.1:8080に移動すると、両方のメッセージが表示され、すべて問題ありません。ただし、2 つ目のブラウザー タブを開いて再度そこに移動すると、問題が発生します。ターミナルで GET HTTP リクエストを取得しますが、GET Javascript リクエストは取得しません。また、ブラウザ ウィンドウにもコンソールにも何も表示されません。

私は何を間違っていますか?任意の提案をいただければ幸いです。

ここに私のPythonコードがあります:

0 投票する
1 に答える
1960 参照

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ページは応答を取得しません)。どうすればいいですか?

0 投票する
0 に答える
2342 参照

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 サーバーを実行するために、このようなことをしなければならないことです。

ここでの問題は、 のインスタンスであるオブジェクトを のコンストラクターに渡すことができないことです。クラス自体に合格する必要があります。インスタンスを作成しますが、これにはアクセスできません。そのため、メソッドを呼び出すことができず、コールバック関数を登録できません (または、コールバック関数の辞書をコンストラクターなどに渡します)。_RequestHandlerHTTPServerHTTPServer

私に何ができる?カスタム データ オブジェクトをインスタンスに取得する何らかの方法があるはず_RequestHandlerですよね? つまり、そうでない場合、そのサーバーのものはすべて深刻に制限されているように見えます. のインスタンスにアクセスできないため、どうすればそれができるかわかりません_RequestHandler。それは私のためにクラスによって作成されHTTPServer、外部には渡されません。

助言がありますか?

0 投票する
3 に答える
17183 参照

python - Python BaseHTTPRequestHandler: JSON で応答する

BaseHTTPRequestHandlerメソッドを継承して実装する Python クラスがありdo_POSTます。

私は現在、メソッドの最後に次のコマンドを使用して、200 などの整数ステータスでのみ応答することに成功しています。

応答の一部として文字列も送信しようとしています。どうすればいいですか?