Ich versuche, einen winzigen Ruby-Server mit TCPServer zu programmieren, aber ich bekomme nicht den Hang, die Liste der Cookies aus der Antwort des Browsers zu bekommen. Im Folgenden ist der Code für den Server - es wird das gleiche HTML für alle Verbindungen außer js dienen.Liste der Browser-Cookies mit Ruby
require 'socket'
server = TCPServer.new('localhost', 2000)
class Serveit
def initialize(socket, content)
@socket = socket
@content = content
end
def content
# @content
@content = File.read('./partials/header.html.erb')
end
def socket
@socket
end
def url
@url = @socket.gets.split(' ')[1]
end
def request
@socket.gets
end
end
loop do
s = Serveit.new(server.accept, rand(1..100000000).to_s)
if s.url == "/js"
content = File.read('app.js').to_s
s.socket.print "HTTP/1.1 200 OK\r\n" + "Content-Type: application/javascript\r\n" + "Content-Length: #{content.bytesize}\r\n" + "Connection: close\r\n"
s.socket.print "\r\n"
s.socket.print content
s.socket.close
else
s.socket.print "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "Content-Length: #{s.content.bytesize}\r\n" + "Connection: close\r\n"
s.socket.print "\r\n"
s.socket.print s.content
s.socket.close
end
end
Der Inhalt der .js-Datei ist ein einfaches Dokument.cookie, um einen Cookie zu setzen. Ich habe versucht, die Liste mit CGI zu bekommen, aber alles, was ich verwalten kann, ist eine Aufforderung auf dem Terminal, manuell Cookies einzufügen.
Mein Verständnis ist, dass Sie die Browserantwortheader erfassen sollen, die die Plätzchen einschließen, aber ich kann nicht recht herausfinden, wie man das macht.
Siehe auch die integrierte [webrick-Bibliothek] (http://ruby-doc.org/stdlib-2.3.1/libdoc/webrick/rdoc/WEBrick.html), eine einfachere Möglichkeit, einen winzigen HTTP-Server zu erstellen . Aber wenn Sie lernen möchten, wie HTTP-Server funktionieren, dann machen Sie weiter. –
könnten Sie eine andere Bibliothek wie [diese Bibliothek] (http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html) benötigen, um das meiste davon für Sie zu tun? –