1

別のポートで実行されているローカル サイトに対して、JavaScript (ライブラリなし) を介して "POST" 呼び出しを行う JavaScript があります。そのサイトが mod_python を使用してアプリを実行している場合、それは機能します。Tornado を使用してアプリを実行している場合、405 エラーで失敗します。ハンドラーに post() および options() メソッドを確実に実装しましたが、まだエラーが発生しています。これは mod_python で動作するため、これは可能である必要があります。Tornado が同じ IP からのリクエストを受け入れるようにする方法を知っている人はいますか?ただし、ポートは異なりますか? (私はこれをテストのためにローカルで行っているだけで、セキュリティの問題についてはまったく気にしません)。

4

2 に答える 2

1

RequestHandler オブジェクトと、Tornado で URL をディスパッチする方法の両方を確認すると役立ちます。私の知る限り、Tornado が 405 を出力するのは、HTTP メソッドの実装が欠落しているか、options() の定義が欠落している場合のみです。

おそらく問題は、適切なメソッドを実装していないことではなく、呼び出している URL が思ったようにディスパッチされていないことです。

ログには何と書かれていますか? トルネードをデバッグ モードで実行していますか? 質問をしている間、どのバージョンの tornado を実行していますか?

tornado をデバッグ モードにし、いくつかの logging.debug メッセージを追加して、リクエストが RequestHandler に届いていることを確認し、何が起こっているかをさらに確認してみてください。

tornado 1.1 (おそらく 1.0? 覚えていない) を使用してデバッグ モードで実行するには、'--logging=debug' を指定してアプリを起動するだけです。ハンドラに logging.debug 呼び出しがあると仮定すると、メッセージが表示されます:)

含まれている helloworld.py デモを使用したハンドラーの例を次に示します。

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        logging.debug("I'm in ur hndlrz, runnin yr codez")
        self.write("Hello, world")

ログ出力は次のとおりです。

furby:helloworld jonesy$ ./helloworld.py --logging=debug
[D 101207 16:12:34 helloworld:28] I'm in ur hndlrz, runnin yr codez
[I 101207 16:12:34 web:849] 200 GET / (127.0.0.1) 1.03ms
[W 101207 16:12:34 web:849] 404 GET /favicon.ico (127.0.0.1) 0.34ms
于 2010-12-07T21:16:03.617 に答える
0

ここで奇妙なことが起こっています - しかし、それはあなたが考えている場所ではありません.

Ajax の同一生成元ポリシーは、実際には、アドレスがポート番号だけ異なる場合でも、異なるアドレスへの要求を防ぎます。ポリシーのウィキペディアの定義を参照してください。

実際の問題は、mod_python バージョンが機能しているように見えるのはなぜですか? たとえば、あなたが思っているポートで mod_python がリッスンしていると確信していますか? Javascript はどのようなもので、投稿先はどのように決定されるのでしょうか?

于 2010-12-06T11:36:11.443 に答える