2009-09-30 5 views
4

Sur mon serveur web je un fichier HTML contenant une balise applet:Quels cookies sont envoyés par la JVM au serveur lors de l'exécution d'une applet Java?

<html> 
    <head/> 
    <body> 
    <applet code="Hello.class" width="100" height="100" /> 
    </body> 
</html> 

Et j'ai un fichier de classe Java nommée Hello.class dans le même répertoire que le fichier HTML.

Ces deux fichiers sont en cours d'exécution sur un serveur Web (IIS 6) dont le nom d'hôte est quelque chose comme ceci:

bart.simpson.springfield.com 

J'ai deux cookies dans mon navigateur:

  • CookieA - Scoped à springfield.com
  • CookieB - Scoped à simpson.springfield.com

Lorsque le H Le fichier TML est demandé au serveur, Fiddler montre que les deux cookies ci-dessus sont envoyés avec la demande.

Lorsque le fichier de classe Java est demandé au serveur, Fiddler montre que seul CookieA (portée à springfield.com) est envoyé.

J'ai besoin de tous les deux cookies à envoyer au serveur. Y a-t-il un moyen de faire cela?

Je vois ce comportement est Firefox et IE 7. 3.5.2

J'ai essayé de trouver les spécifications sur lesquelles les cookies sont envoyés, mais n'a rien donné depuis Java 1.3.

Merci!

+0

Je ne sais rien de l'implémentation, mais si elle utilise java.net.URL en interne, je me demande si 'springfield.com' et' simpson.springfield.com' se résolvent à la même adresse IP. –

+0

Dans mon cas, springfield.com et simpson.springfield.com ont des adresses IP différentes. Je ne pense pas que les cookies qu'un navigateur envoie à un serveur ont quelque chose à voir avec les adresses IP mais ont tout à voir avec les noms de domaine des cookies. –

+0

J'ai fait quelques recherches sur le RFC pour les cookies (http://www.faqs.org/rfcs/rfc2965.html) et, dans la mesure où je comprends le jargon juridique, il semble que les deux cookies doivent être envoyés car ils correspondent tous les deux au nom de domaine. –

Répondre

3

Le plug-in Java côté client consulte toujours le navigateur pour vérifier si un cookie doit être envoyé dans la requête. Les détails du support des cookies dans le plug-in Java sont disponibles dans le Java deployment guide.

Il existe cependant une situation dans laquelle les cookies ne seront pas envoyés, et c'est lorsque le serveur Web a défini l'indicateur HttpOnly sur le cookie. Dans ce cas, la requête HTTP pour la classe d'applet ne contiendra pas l'en-tête du cookie, car le plug-in Java ne pourra pas accéder au cookie.

+0

Vineet, j'avais le drapeau HttpOnly sur les cookies qui n'étaient pas envoyés. Retrait de ce drapeau a résolu mon problème. Merci beaucoup! –

+0

De rien. Juste fait face au même problème il y a quelques semaines. –

0

Le cookie pour le fichier HTML est envoyé par le navigateur lui-même mais le cookie pour le fichier de classe d'applet est envoyé par Java Plugin. Donc, ils diffèrent souvent.

Pour le navigateur, la seule règle qu'il utilise est le nom de domaine. Le plugin doit prendre en compte les choses en tant que politique de sécurité et base de code. Voir ce document pour les détails,

http://java.sun.com/products/plugin/1.3/docs/cookie.html

Quelle est votre base de code pour l'applet?

+0

ZZ Coder, merci pour votre réponse. Dans ce cas, il s'agissait d'un problème lié à l'indicateur HttpOnly en cours de définition. –