1

我有一些 javascript 通过 javascript(无库)对在不同端口上运行的本地站点进行“POST”调用。如果该站点使用 mod_python 运行应用程序,它就可以工作。如果它正在使用 Tornado 运行应用程序 - 它会失败并出现 405 错误。我已经确定在处理程序上实现了 post() 和 options() 方法,但它仍然出错。由于这适用于 mod_python,因此这必须是可能的。任何人都知道如何让 Tornado 接受来自同一 IP 但不同端口的请求?(我只是在本地进行测试,根本不关心安全问题)。

4

2 回答 2

1

这将有助于查看您的 RequestHandler 对象,以及您如何在 Tornado 中调度 URL。据我所知,只有缺少 HTTP 方法实现或缺少 options() 定义才会导致 tornado 发出 405。

也许问题不在于您没有实现正确的方法,而是您调用的 url 没有按照您认为的方式发送。

日志说什么?你在调试模式下运行龙卷风吗?当我问问题时,你正在运行什么版本的龙卷风?

尝试将 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 回答