Seltsames Verhalten bei GET Request

Robokopp

Bekanntes Mitglied
Ich habe einen Server programmiert, der GET Requests verarbeitet.

Wenn ich nun einen solchen Request sende, passiert folgendes:

1.Der GET Request wird so verarbeitet, wie er soll

2. Es wird ein POST Request empfangen:
POST /mobiquo/mobiquo.php HTTP/1.1

3.Es wird per GET Request das favicon angefordert:
GET /favicon.ico HTTP/1.1

Das alles geschieht in 3 verschiedenen Connects, was ich eigentlich nur ungerne möchte, aus zweierlei Gründen: Erstens möchte ich den Server nicht unnötig auslasten, und zweitens springt bei der kurzen Zeitspanne mein implementierter DoS Filter an (hab das schon mehr oder weniger hinbekommen, dass er darüber hinwegsieht aber das ist keine Dauerlösung)

Kann man das unterbinden?

Was soll/bewirkt der Postrequest?

Liegt das nur am Browser oder ist es generell so?

MfG
 
N

nillehammer

Gast
Das alles geschieht in 3 verschiedenen Connects,
Das ist das Standardverhalten bei HTTP. Für jeden Request wird eine Connection geöffnet und nach dem Response wieder geschlossen. Du kannst das abmildern, indem Du den Server um das Feature "keep-alive" erweiterst (HTTP persistent connection - Wikipedia, the free encyclopedia).
Was soll/bewirkt der Postrequest?
Das müsstest Du als Autor der Anwendung doch selbst wissen. Ein Webclient mach von sich aus nichts. Ohne weitere Details zu kennen könnte es entweder der POST eines (evtl. versteckten) Formular sein oder Du verwendest AJAX-Technologien?
 

Robokopp

Bekanntes Mitglied
Das ist das Standardverhalten bei HTTP. Für jeden Request wird eine Connection geöffnet und nach dem Response wieder geschlossen. Du kannst das abmildern, indem Du den Server um das Feature "keep-alive" erweiterst (HTTP persistent connection - Wikipedia, the free encyclopedia).

Das ist mir klar, aber mir ist nicht klar warum es überhaupt 3 Connections gibt wenn ich doch nur eine schicke.


Das müsstest Du als Autor der Anwendung doch selbst wissen. Ein Webclient mach von sich aus nichts. Ohne weitere Details zu kennen könnte es entweder der POST eines (evtl. versteckten) Formular sein oder Du verwendest AJAX-Technologien?

Weder noch. es ist ein simples HTTP Request alla localhost/search?param1=inhalt+param2=inhalt+param3=inhalt
kein Formular, kein AJAX, sondern einfach nur ein link den ich in der Adressleiste eingebe, und daraus resultieren 3 Connects, wie schon genannt.
 
N

nillehammer

Gast
Wenn der Client ein Browser ist, erklärt sich das hier
Code:
3.Es wird per GET Request das favicon angefordert:
GET /favicon.ico HTTP/1.1
Das machen die Browser von sich aus, um in Tabs eine nette kleine Grafik anzuzeigen. Darauf hast Du als Serverbetreiber keinen Einfluss und musst damit leben.

Code:
localhost/search?param1=inhalt+param2=inhalt+param3=inhalt
Was ist denn Dein Response auf die Abfrage? Eine HTML-Seite? Evtl. mit JavaScript eingebunden?
 

Robokopp

Bekanntes Mitglied
Wenn der Client ein Browser ist, erklärt sich das hier
Code:
3.Es wird per GET Request das favicon angefordert:
GET /favicon.ico HTTP/1.1
Das machen die Browser von sich aus, um in Tabs eine nette kleine Grafik anzuzeigen. Darauf hast Du als Serverbetreiber keinen Einfluss und musst damit leben.

Code:
localhost/search?param1=inhalt+param2=inhalt+param3=inhalt
Was ist denn Dein Response auf die Abfrage? Eine HTML-Seite? Evtl. mit JavaScript eingebunden?



Danke erstmal für die Erklärung, das macht Sinn. Da die URL später eh nur als API für ein Programm dienen wird, kann ich das schon mal vernachlässigen.


Ich habe eine Art Defaultseite, die aufgerufen wird falls keine Parameter angegeben werden. Die ist vollständig in html geschrieben.
Dann hab ich die Antworten auf die Anfragen. Dort setze ich den Content-Type auf text/plain, folglich kein html, sondern ganz normaler Text der da ausgegeben wird.

Also keinerlei Javascript, kein AJAX oder sonstiges.

Ich hab jetzt mal testweise einen Clienten geschrieben, der sich mit dem Server verbindet.Nun ist es wirklich auch immer nur genau ein Request.

Naja trotzdem danke ;)
 
T

trääät

Gast
was ist denn das von dir erwartete verhalten ?

wenn der client ein browser ist hat dieser nun mal oben eine URL die er laden soll ... das tut er auch ... aber damit das auch funktioniert wird nicht nur der HTML-code der seite selbst geladen ... sondern auch alle damit verknüpften daten wie im header verlinkte CSS- oder JS-files ... alle eigebunden img- und andere inline daten ... und und und ...

wenn die seite also aus mehr als eben nur diesem einem wirklich statischem html-file besteht ... dann muss dieser inhalt auch irgendwo her kommen ... und das macht ein browser eben dadurch das er für jede resource eine neue anfrage stellt ...

es gibt zwar wie erwähnt HTTP-keep-alive ... was auch von den meisten browsern unterstützt wird ... aber die implementierung auf server seite dürfte etwas aufwändiger sein ...
 

Robokopp

Bekanntes Mitglied
Ja aber es ist eben nichts weiter als eine statische html-Seite,deswegen hat es mich eben gewundert.

Das von mir erwartete Verhalten wäre gewesen, dass eben nur der eine GET-Request ankommt, den ich auch abgeschickt habe und nicht noch irgendwelche anderen.
Ich muss zugeben, dass ich mich mit HTML nicht auskenne.Deswegen bin ich wahrscheinlich auch davon ausgegangen, dass beispielsweise das Favicon einfach in dieser Datei definiert wird und nicht einfach über einen anderen Request angefordert wird.

Anscheinend kommt dieser Post-Request auch nicht immer, hatte den schon lange nicht mehr, warum auch immer!?


Wie dem auch sei, wenn ich die Requests per eigenem Skript schicke, verhält es sich genau so wie ich es erwartet hatte.

Da die Abfragen später eh nicht über den Browser stattfinden werden, kann mir der Effekt den ich hier angesprochen habe ja sowieso egal sein. Alles was per Post kommt, oder nach einem Favicon fragt, oder im allgemeinen nicht der gewünschten Form des Requests entspricht, kann ich filtern und dann einfach ignorieren.
 
T

trääät

Gast
naja ... der unterschied zwischen nem browser und deinem script ist halt das der browser halt nun mal weis was er alles automatisch im hintergrund eben zusätzlich machen muss ... was du halt so nicht in deinem script stehen hast und daher halt auch nicht machst ... und wenn du halt nur einen request sendet kommt natürlich auch nur einer beim server an ... der browser sendet halt mehrere requests weil er halt auch mehrere daten haben will ...

btw : der POST-request kann auch von irgendnem browser-addon kommen wenn halt nichts weiter in der HTML steht ... müsste man mal analysieren
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
X HTTP Seltsames Charset Netzwerkprogrammierung 8
M JAVA to php seltsames Fragezeichen in Ausgabe Netzwerkprogrammierung 7
S Seltsames Socketproblem Netzwerkprogrammierung 3
K Frage zum Verhalten von SocketChannel.write(.) Netzwerkprogrammierung 9
Thallius HTTP Kann man den Raw HTTPS Request irgendwie ausgeben lassen? Netzwerkprogrammierung 6
O HTTP Wer hilft mit meinem UTF-8 http Request ? Netzwerkprogrammierung 1
J API Aufruf mit GET Request und HMAC Netzwerkprogrammierung 3
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
N Post u Head Request an Server Netzwerkprogrammierung 4
M http request and response Netzwerkprogrammierung 0
J Json von Html request einlesen Netzwerkprogrammierung 0
T curl request in java umwandeln Netzwerkprogrammierung 4
S PUT-Request Netzwerkprogrammierung 0
P Java Deauth / Deauthentication request Netzwerkprogrammierung 10
C Android: Json-POST Request zu REST Webservice Netzwerkprogrammierung 2
Y HTTP No request data found Netzwerkprogrammierung 2
B Socket HTTP-Request führt zu Endlosschleife Netzwerkprogrammierung 5
B Post Request in Java Netzwerkprogrammierung 11
D OT JavaScript JQuery AJAX Request Netzwerkprogrammierung 2
R HTTP Apache HTTP Client: Request mit angehängter Datei Netzwerkprogrammierung 2
O Http request Netzwerkprogrammierung 7
T HTTP POST Request Netzwerkprogrammierung 3
E HTTP Request? Netzwerkprogrammierung 4
L Body eines http Request auslesen Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
D http request Netzwerkprogrammierung 11
ARadauer POST Request absetzen.. Netzwerkprogrammierung 3
J GET Request Netzwerkprogrammierung 1
hdi POST Request (HttpConnection) Netzwerkprogrammierung 6
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
J 403 error bei POST request Netzwerkprogrammierung 3
G auf http-request antworten. Netzwerkprogrammierung 3
G JMS Objektzugriff Request Reply erzeugt lediglich Kopie Netzwerkprogrammierung 4
L Java HTTP Request Netzwerkprogrammierung 3
S HTTP Request erstellen Netzwerkprogrammierung 2
K Bad Request nach Form Login in Jakarta HttpClient Netzwerkprogrammierung 4
B lange Strings in http-Request? Netzwerkprogrammierung 3
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
D HTTP Request erstellen (Form Name übergeben!) Netzwerkprogrammierung 3
P Easy Http Request Netzwerkprogrammierung 9
A HTTPS-Request via Proxy mit Konfigurationsskript Netzwerkprogrammierung 3
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
Z HTTP Request Netzwerkprogrammierung 3
A http request per socket an apache server Netzwerkprogrammierung 5
M Ein HTTP-request aus Java heraus senden Netzwerkprogrammierung 3
J HTTP Request Netzwerkprogrammierung 2
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
C dhcp request Netzwerkprogrammierung 16
D Bad Request bei Dateiload Netzwerkprogrammierung 2
X mehrere Request über eine HttpURLConnection Netzwerkprogrammierung 2
G Http Request Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben