Bei der Entwicklung von Anwendungen werden sie bei mehreren Anwendungen normalerweise über ein Portalportal integriert. Dieses Portal ist der Eingang zu allen Anwendungen. Sobald sich der Benutzer bei Portal anmeldet und ein anderes System eingibt, benötigt er oder sie ein ähnliches Einzelsignal (SSO). Beim Betreten jedes Subsystems muss er sich nicht wieder anmelden. Natürlich können Sie ähnliche Funktionen über professionelle Single-Sign-On-Software implementieren oder Datenbank-Token selbst schreiben. Überprüfung.
Es werden verschiedene Methoden zum Umgang mit HTTP -Header zusammengefasst:
Verwenden Sie httpServletRequest
importieren javax.servlet.http.httpServletRequest; // ... private httpServletRequest -Anfrage; // Anforderungsheader private map <string, string> getheadersinfo () {map <String, String> map = new HashMap <String, String> (); Enumeration Headernames = Request.Getheadernames (); while (headernames.hasmoreElements ()) {String key = (String) Headernames.NextElement (); String value = Request.Getheader (Schlüssel); map.put (Schlüssel, Wert); } Rückgabekarte; }Ein typisches Beispiel ist wie folgt:
"Headers": {"Host": "yihaomen.com", "Akzeptieren": "Gzip, Deflate", "X-Forward-for": "66.249.xx", "x-forwarded-Proto": "http", "User-Agent": "MOZILLA/5.0 (kompatibel; googleBot/2.1; +http: //www.google.com/bot.html) "," X-Request-Start ":" 1389158003923 "," Akzeptieren Sie ":"*/*"," Verbindung ":" Close "," X-Forward-Port ":" 80 "," aus ":": ":": ":": ":": ":": "googleBot (at) (at)")Nutzen Sie Benutzer-Agent
importieren javax.servlet.http.httpServletRequest; // ... private httpServletRequest -Anfrage; private String-GetUseragent () {return request.getheader ("user-Agent"); }Ein typisches Beispiel ist wie folgt:
Mozilla/5.0 (kompatibel; GoogleBot/2.1; +http: //www.google.com/bot.html)
Beispiel für die Verwendung von Spring MVC, um den Httprequest -Header zu erhalten
Import Java.util.Enumation; org.springframework.web.bind.annotation.PathVariable; Import org.springframework.web.bind.annotation.RequestMapping; org.springframework.web.servlet.modeLandView;@Controller@RequestMapping ("/seiten") öffentliche Klasse SiteController {@autowired private httpServletRequest -Anfrage; @RequestMapping (value = "/iinput:.+}", method = requestMethod.get) public modelAndView getDomain (@PathVariable ("input") String -Eingabe) {modelAndView modelView = new modelAndView ("Ergebnis"); modelView.addObject ("user-Agent", getUseragent ()); modelView.addObject ("Header", Getheadersinfo ()); return modelView; } // User Agent Private String getUseragent () {return request.getheader ("user-Agent"); } // Anforderungsheader Private Map <String, String> Getheadersinfo () {Map <String, String> map = new HashMap <String, String> (); Enumeration Headernames = Request.Getheadernames (); while (headernames.hasmoreElements ()) {String key = (String) Headernames.NextElement (); String value = Request.Getheader (Schlüssel); map.put (Schlüssel, Wert); } Rückgabekarte; }}Einige Leute können sagen, dass der HTTP -Header simuliert werden kann, sodass Sie ein System konstruieren können, um diese zu täuschen. Ja, das stimmt. Wenn Sie also den HTTP -Header verwenden, um es zu bestehen, müssen Sie sich daran erinnern, dass alle Anfragen über das Portal bearbeitet und an jedes Subsystem weitergeleitet werden müssen, und dieses Problem wird nicht auftreten. Da Portal zuerst alle vom Benutzer initiierten Anfragen abfängt. Wenn es sich um einen konstruierten Benutzer handelt, gibt es in der Portal -Sitzung keinen Datensatz und es wird weiterhin zur Anmeldeseite springen. Wenn es in der Protalsitzung aufgezeichnet wird und es auch Aufzeichnungen im HTTP -Header gibt, ist es ein legaler Benutzer im Subsystem, und dann können Sie die Geschäftslogik gemäß einigen Anforderungen bewältigen.
JSP/Java erhält HTTP -Header -Informationen (Anfrage) Beispiel
<%// Header.jspout.println ("Protokoll:" + request.getProtocol () + "<br>"); request.getServerport () + "<br>"); out.println ("Protokoll:" + request.getProtocol () + "<br>"); out.println ("Server -Info:" + getServletConfig (). request.getRemoteaddr () + "<br>"); out.println ("Remote -Host:" + request.getRemotehost () + "<br>"); out.println ("Charaktercodierung:" + Request.GetCharactercoding () + "<br>"); "<br>"); out.println ("Inhaltstyp:" + Request.GetContentType () + "<br>"); Request.GetPathinfo () + "<br>"); out.println ("Pfad trans:" + request.getPathTranslated () + "<br>"); "<br>"); out.println ("Session ID:" + Request.GetRequestedSessionId () + "<br>"); request.getServletPath () + "<br>"); out.println ("erstellt:" + session.getCreationtime () + "<br>"); out.println ("Last Access:" + session.getLastaccessTime () + "<br>"); "<br>"); out.println ("Akzeptieren:" + request.getheader ("accept") + "<br>"); out.println ("Host:" + request.getheader ("host") + "<br>"); Request.Getheader ("Akzeptieren Sie Sprache") + "<br>"); out.println ("Akzeptieren:" + request.getheader ("Akzeptieren") + "<br>"); out.println ("user-Agent:" + request.getheader ("agal-Agent") + ") +") <Br> "); Request.Getheader ("Verbindung") + "<br>"); out.println ("Cookie:" + Request.Getheader ("Cookie") + "<br>");%>Anmerkungen zu Request.Getheader ("Referer")
Request.Getheader ("Referer") erhält die Adresse des Besucheres. Nur beim Zugriff auf die aktuelle Seite über einen Link können Sie die Adresse der vorherigen Seite abrufen. Andernfalls ist der Wert von request.getheader ("referer") null, und die aktuelle Seite wird über das Fenster geöffnet. Open oder direkt die Adresse eingeben, ist ebenfalls null.
Das obige ist der vollständige Inhalt mehrerer Methoden (Must-Read), um den Httprequest-Header von Java zu erhalten, das Ihnen vom Herausgeber zu Ihnen gebracht wurde. Ich hoffe, es wird Ihnen hilfreich sein und wulin.com mehr ~ unterstützen ~