HttpServletRequest#getHeader(“User-Agent”) renvoie la valeur null nom du navigateur
Je suis à l'aide de Java 6. J'ai très peu de connaissances de JSP et de Servlets.
J'utilise le code suivant pour obtenir nom du navigateur dans laquelle ma demande est en cours d'exécution:
String browserName = requestProvider.get().getHeader("User-Agent");
Aussi je suis en utilisant le code suivant pour obtenir l'adresse IP de la machine sur laquelle ma demande est en cours d'exécution:
String ipAdd = requestProvider.get().getRemoteAddr();
Dans les deux cas, requestProvider
est une variable de référence de type Provider<HttpServletRequest>
. Et je suis assuré qu'il n'est jamais NULL
.
Maintenant, le problème est quelques fois que je reçois des deux valeurs (browserName and ipAdd
) NULLE.
J'ai écrit parfois parce que je n'ai pas de cas de test.
Donc ma question est, quels sont les cas en Java, lorsque ces valeurs peuvent être NULL?
Quels soins dois-je prendre dans le codage, pour éviter ce problème?
Est-il un autre moyen d'obtenir l'adresse IP & nom du navigateur à chaque fois?
- certains clients/navigateurs peuvent ne pas envoyer-tête User-Agent . Essayez avec
user-agent
. - Pouvez-vous me donner le code exact?
- stackoverflow.com/questions/1326928/...
- Vous ne pouvez pas faire confiance à un seul octet qui vient dans votre demande dans la demande. Par conséquent, vous ne pouvez pas faire confiance n'importe quoi pour être non-nulle.
Vous devez vous connecter pour publier un commentaire.
null
signifie toute personne qui a envoyé la demande ne comprend pas une "User-Agent" de l'en-tête.est peu probable à retourner la valeur null dans des circonstances normales, mais il y a des rapports de la il peut le faire dans les cas limites, comme après la réponse a déjà été envoyé. Peu importe, "obtenir l'adresse IP de la machine sur laquelle ma demande est en cours d'exécution" ne ressemble pas à ce que
getRemoteAddr()
est pour. C'est pour obtenir l'adresse la plus récente d'un client ou de proxy qui a envoyé la demande.Pas. Vous êtes entièrement dépendant sur le comportement du client HTTP et/ou de tout intervenant de procurations pour obtenir des informations de ce genre.
Essayez d'utiliser l'agent utilisateur comme des minuscules, parce qu'il fonctionne si nous avons directement accès à partir de l'en-tête.
Chaîne browserName = requestProvider.get().getHeader("user-agent");
autre façon d'obtenir l'adresse IP est
Chaîne ip = requestProvider.get().getHeader("True-Client-IP"); cela fonctionne si nous avons akamai integeration.