Jeg er begyndt at interessere mig lidt for browser fingerprints, og har læst, at "The header order of each browser is fixed and cannot be changed in the browser settings." Så derfor vil jeg gerne læse browsernes header-rækkefølge.
Jeg har ingen løsning men vil da lige nævne det som ikke virker i håb om at det kan inspirere nogen til at finde en løsning som virker.
Normal request processing har læst headerne og gemt dem i en data struktur når servlet/JSP kaldes. Forskellig data struktur for forskellige servere. Tomcat's data struktur gør at headere hentes i en anden rækkefølge end indsættelse.
Et servlet filter synes ikke at løse problemet, da det bruger samme Request objekt som normal processing.
Så var der muligheden af at Tomcat header processing havde gode log kald indsat, så man kunne enable logging med en custom appender og hapse informationen i indsættelses rækkefølge den vej af. Men som jeg læste Tomcat source så er der ikke de nødvendige log kald.
"Forskellig datastruktur for forskellige servere."
1) Er Apache/Tomcat en Tomcat ovenpå en Apache? Eller er de totalt vokset sammen som een enhed? Jeg tænker på, om man måske kunne hente information direkte fra Apache serveren?!?
2) Er der Java webservere, der ikke bygger på Tomcat? Jeg har kikket lidt på Resin, med den er - så vidt jeg kan forstå - blot et Tomcat-derivat. SUNs oprindelige Java webserver var ikke Tomcat, men den eksisterer mig bekendt ikke mere.
3) Det undrer mig, at Tomcat smider brugbar information væk. Det lyder som en fejl i arkitekturen.
Apache Software Foundation = en open source organisation Apache httpd = en open source web server (skrevet i C) vedligeholdes af ASF Apache Tomcat = en open source servlet container (skrevet i Java) som vedligeholdes as ASF
Men i daglig tale kaldes de 3 ofte for:
Apache Apache Tomcat
og så er der forvirring.
Men det bliver værre endnu fordi Apache httpd kan bruges foran Apache Tomcat.
Det er helt almindeligt med:
----(HTTP port 80 eller HTTPS port 443)----Apache httpd----(HTTP port 8080)----Apache Tomcat
----(HTTP port 80 eller HTTPS port 443)----Apache httpd----(AJP port 8009)----Apache Tomcat
og så er navne forvirringen ved at være total.
Men tilbage til problemet i spørgsmålet så tror jeg ikke at en Apache httpd vil løse problemet.
1) servlet specs kunne have krævet at headere returneres i original rækkefølge og de forskellige implementationer havde så været nød til at vælge en data struktur som kunne opfylde det krav
2) support for en "raw servlet" hvor man får en InputStream og en OutputStream i.s.f. en Request og en Response
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.