我需要调试一个 XML-RPC 应用程序,该应用程序通过 HTTP 发送 XML 回复。我有一个示例 XML 回复(即来自服务器的数据,发送到不起作用的客户端),我想调试我的应用程序。理想情况下,我想要一个简单的 HTTP 服务器,它将提供一个文件来回复所有请求。有人提出请求/
?向他们发送此文件。有人使用某个 cookie 发帖/server/page.php
?只需向他们发送此文件。我不关心多线程或安全性。我只需要使用它几个小时进行调试。我在机器上有 root 权限。
我希望有像这样容易使用的东西:
simple_http_server -p 12445 -f my_test_file
我知道 python 的SimpleHTTPServer
模块,但我不确定在这种情况下如何让它工作。
答案1
如果你已经inetd
安装了,只需创建一个脚本(我犯了一个错误,不需要该脚本)
/bin/bash
cat $1
然后将这行添加到 inetd.conf 中
http stream tcp nowait root /bin/cat cat /some/other/dir/file.txt
使用 Python 只需扩展该类BaseHTTPServer.BaseHTTPRequestHandler
并定义一个do_GET
方法,然后按照文档例如
import BaseHTTPServer
class HTTPHandlerOne(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self): self.wfile.write("test\r\n")
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
run(handler_class=HTTPHandlerOne)
答案2
您可以向 apache vhost 添加 mod_rewrite 规则,将所有请求重写回您想要提供的文件。
<VirtualHost *:80>
ServerName onefilevhost.local
RewriteEngine On
RewriteRule ^/(.*)? http://onefilevhost.local/serve/this/file.txt
</VirtualHost>
答案3
你可以这样做西纳特拉非常简单。安装 sinatragem install sinatra
并创建一个test_page.rb
文件,如下所示:
require 'sinatra'
get '/*' do
File.read('/server/page.php')
end
$RUBYOPT=rubygems
如果你的 shell 上没有,请require 'rubygems'
在开头添加。
你可以用 来运行它ruby test_page.rb
。它默认会监听 4567 端口。