2016-12-29 41 views
2

我對這門語言有點新,我想開始在非常簡單的HTTP服務器上進行黑客攻擊。我當前的代碼如下所示:Crystal-lang服務index.html

require "http/server" 

port = 8080 
host = "127.0.0.1" 
mime = "text/html" 

server = HTTP::Server.new(host, port, [ 
    HTTP::ErrorHandler.new, 
    HTTP::LogHandler.new, 
    HTTP::StaticFileHandler.new("./public"), 
    ]) do |context| 
    context.response.content_type = mime 
end 

puts "Listening at #{host}:#{port}" 
server.listen 

我在這裏的目標是,我不想列出目錄,因爲這樣就可以了。我實際上想要index.html,如果它在public/可用,而不必將index.html放置在URL欄中。我們假設index.html確實存在於public/。任何指向可能有用的文檔的指針?

回答

3

像這樣的東西?

require "http/server" 

port = 8080 
host = "127.0.0.1" 
mime = "text/html" 

server = HTTP::Server.new(host, port, [ 
    HTTP::ErrorHandler.new, 
    HTTP::LogHandler.new, 
]) do |context| 
    req = context.request 

    if req.method == "GET" && req.path == "/public" 
    filename = "./public/index.html" 
    context.response.content_type = "text/html" 
    context.response.content_length = File.size(filename) 
    File.open(filename) do |file| 
     IO.copy(file, context.response) 
    end 
    next 
    end 

    context.response.content_type = mime 
end 

puts "Listening at #{host}:#{port}" 
server.listen 
相關問題