Простой HTTP-сервер, который будет отправлять один и тот же файл для всех запросов?
Мне нужно отладить приложение XML-RPC, которое отправляет ответы XML по HTTP. У меня есть образец XML-ответа (т.е. данные с сервера, отправленные клиенту, который не работает), я хотел бы отладить свое приложение. В идеале мне нужен простой HTTP-сервер, который будет обслуживать один файл в ответ на все запросы. Кто-то просит /
? Отправьте им этот файл. Кто-то делает сообщение для /server/page.php
с определенным cookie? Просто отправьте им этот файл. Меня не волнует многопоточность или безопасность. Мне нужно будет использовать это только в течение нескольких часов для отладки. У меня есть рут на машине.
т.е. я надеюсь, что есть что-то простое в использовании, как это:
simple_http_server -p 12445 -f my_test_file
Я в курсе питона SimpleHTTPServer
модуль, но я не уверен, как заставить это работать в этом случае.
3 ответа
Если у вас есть inetd
установил, просто создай скрипт вроде (я ошибся, скрипт не нужен)
#! / bin / Баш кошка $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)
Вы можете добавить правило mod_rewrite к хосту apache, которое переписывает все запросы обратно в файл, который вы хотите обслуживать.
<VirtualHost *:80>
ServerName onefilevhost.local
RewriteEngine On
RewriteRule ^/(.*)? http://onefilevhost.local/serve/this/file.txt
</VirtualHost>
Вы можете сделать это с Синатрой довольно легко. Установить Синатра делает gem install sinatra
и создать test_page.rb
файл как это:
require 'sinatra'
get '/*' do
File.read('/server/page.php')
end
Если у вас нет $RUBYOPT=rubygems
на вашей раковине, добавить require 'rubygems'
в начале.
Вы можете запустить его с ruby test_page.rb
, Он будет прослушивать порт 4567 по умолчанию.