Headers bei HTTP Connection

Huhu mal wieder ich :slight_smile:

ich versuche gerade auf einen HTTPRequest zu antworten, das funktioniert soweit auch schon mal. Nur wie kann ich Headers bei der Antwort hinzufĂĽgen? So das ich quasi als HTML usw. antworten kann und nicht nur text.

Probiert habe ich das mal so:

      Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + "Content-Type: text/html; charset=UTF-8"
      Me.write(reheaders + "<?xml version=\" + Chr(34) + "1.0\" + Chr(34) + "?>" _
      + "<!DOCTYPE cross-domain-policy SYSTEM \" + Chr(34) + "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\" + Chr(34) + ">" _
      + "<cross-domain-policy>" _
      + "<allow-access-from domain=\" + Chr(34) + "*\" + Chr(34) + " />" _
      + " </cross-domain-policy>")

Leider ohne erfolg :frowning:

aber da oben stehen doch Headers. Schreib da was dazu.

Das Problem ist, im Browser passiert so aber nichts, da er die Antwort nicht versteht, so wie es aussieht. Hatte auch noch einen kleine VB denk Fehler, da man in VB Anführungsstriche in einem String einfach mit “Thomas sagt: /“Hallo/”” da stellt, die hatte ich oben drin und eben bereinigt.

Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + "Content-Type: text/html; charset=UTF-8" Me.write(reheaders + "<?xml version=" + Chr(34) + "1.0" + Chr(34) + "?>" _ + "<!DOCTYPE cross-domain-policy SYSTEM " + Chr(34) + "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" + Chr(34) + ">" _ + "<cross-domain-policy>" _ + "<allow-access-from domain=" + Chr(34) + "*" + Chr(34) + " />" _ + " </cross-domain-policy>")

Also scheint das so nicht zu funktionieren, wie ich das bei mir mit den Headers versucht habe als “reheaders”

Problem gelöst, die Header Definition war OK, jedoch benötigt es 2 EndofLines.

Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + "Content-Type: text/html"+ EndOfLine + EndOfLine 

So klappt es :slight_smile:

da fehlt doch sowieso ein endofline oder zwei zwischen header und Inhalt.

Hallo Zusammen,

hat jemand eine Idee wie ich so einen Header einer Antwort mitgeben kannn?

HTTP/1.1 200 OK
Connection: close
Server: HttpServer
Access-Control-Allow-Origin: *
Content-Type: text/html
Cache-Control: no-store, no-cache
Transfer-Encoding: chunked

Wenn ich das so versuchen wie oben, geht das leider gar nicht.

wie? Hast du ein bisschen Code zum schauen?

Nun ich hab das versucht wie oben, also einfach alles bei reheaders eingefĂĽgt, zB. so:

Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + "Content-Type: text/html"+ EndOfLine + "Connection: close" + EndOfLine + EndOfLine

Hast du ein Testprojekt?

Ne ich hab das nur in meinem Tool, da es nicht klappt hab ich es aktuell eh nicht drin.

Verwenden tue ich das aktuell so:

Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + "Content-Type: text/html"+ EndOfLine + EndOfLine 

If param = "/crossdomain.xml" Then
    Me.write(reheaders + "<?xml version=" + Chr(34) + "1.0" + Chr(34) + "?>" _
    + "<!DOCTYPE cross-domain-policy SYSTEM " + Chr(34) + "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" + Chr(34) + ">" _
    + "<cross-domain-policy>" _
    + "<allow-access-from domain=" + Chr(34) + "*" + Chr(34) + " />" _
    + " </cross-domain-policy>")
  End If

Hat leider wohl keiner eine Idee oder?

Hast du vielleicht ein kleines Testprojekt?
Und was ist EndOfLine bei dir?

EndOfLine ist eigentlich nur der benötigte Zeilenumbruch.

Ich hab mal schnell ein Testprojekt gemacht…

https://office.mailbox.org/publications/documents/4120648/d1d1cd6e4ce6a30fffb62bd398a057cb

Hoffe der Download geht bei dir :), wenn du Header so setzt wie oben, also Dim reheaders As String = “HTTP/1.1 200 OK” + EndOfLine + “Content-Type: text/html”+ EndOfLine + EndOfLine funktioniert das…

Bei VB hatte das Objekt einfach eine Header eigenschaft, da war das kein Problem so zeug einfach mit zugeben, ich vermute mal das ich da wieder was falsch mache :slight_smile:

endofline ist verschieden ob man bei Mac, Win oder Linux arbeitet. FĂĽr das Protokoll ist aber nur eine Variante richtig!

[code]Protected Sub ProcessHeaders(headers as string)
Dim temp, cmd, param As String
Dim bs As BinaryStream
Dim f As FolderItem

// parse out the header data
temp = NthField( headers, Chr(13), 1 )
cmd = NthField( temp, " ", 1 )
param = NthField( temp, " ", 2 )

If cmd = “GET” Then // we got a get command

dim EndOfLine as string = EndOfLine.UNIX

Dim reheaders As String = "HTTP/1.1 200 OK" + EndOfLine + _
"Connection: close" + EndOfLine + _
"Server: HttpServer" + EndOfLine + _
"Access-Control-Allow-Origin: *" + EndOfLine + _
"Content-Type: text/html" + EndOfLine + _
"Cache-Control: no-store, no-cache" + EndOfLine + EndOfLine

Me.write(reheaders + "Das ist ein Test." )

End If
End Sub
[/code]

so geht es. Du darfst kein chunked transfer encoding versprechen, wenn du’s nicht machst. Und Zeilenende hab ich mal auf Unix festgelegt.

Ok Danke sehr :slight_smile: ich probiere das am Freitag mal aus auf meinem Mac