【问题标题】:What cookies are sent by the JVM to the server when running a Java applet?运行 Java 小程序时,JVM 向服务器发送了哪些 cookie?
【发布时间】:2010-12-02 17:54:09
【问题描述】:

在我的网络服务器上,我有一个包含小程序标签的 HTML 文件:

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

我在与 HTML 文件相同的目录中有一个名为 Hello.class 的 Java 类文件。

这两个文件都在主机名如下所示的 Web 服务器 (IIS 6) 上运行:

bart.simpson.springfield.com

我的浏览器中有两个 cookie:

  • CookieA - 范围为 springfield.com
  • CookieB - 范围为 simpson.springfield.com

当服务器请求 HTML 文件时,Fiddler 显示上述两个 cookie 都随请求一起发送。

当从服务器请求 Java 类文件时,Fiddler 显示只发送了 CookieA(范围为 springfield.com)。

我需要两个 cookie 发送到服务器。有没有办法做到这一点?

我看到这种行为是 Firefox 3.5.2 和 IE 7。

我试图找到发送 cookie 的规范,但自 Java 1.3 以来一无所获。

谢谢!

【问题讨论】:

  • 我实际上对实现一无所知,但如果它在内部使用java.net.URL,我想知道springfield.comsimpson.springfield.com 是否解析到相同的IP 地址。
  • 在我的例子中,springfield.com 和 simpson.springfield.com 有不同的 IP 地址。我认为浏览器发送到服务器的 cookie 与 IP 地址无关,但与 cookie 的域名有关。
  • 我对 RFC 的 cookie (faqs.org/rfcs/rfc2965.html) 进行了一些研究,就我理解的法律术语而言,这两个 cookie 都应该发送,因为它们都与域名匹配。
  • 澄清一下,我的问题与域名中有多少部分无关。 simpson.springfield.com 的所有 cookie 都带有 HttpOnly 标记,而 springfield.com 的所有 cookie 都没有 HttpOnly 标记,这只是一个巧合。

标签: java cookies applet


【解决方案1】:

HTML 文件的 cookie 是由浏览器自己发送的,而 applet 类文件的 cookie 是由 Java Plugin 发送的。所以它们经常不同。

对于浏览器,它使用的唯一规则是域名。插件必须考虑安全策略和代码库等因素。有关详细信息,请参阅此文档,

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

您的小程序代码库是什么?

【讨论】:

  • ZZ编码器,谢谢您的回复。在这种情况下,这是设置了 HttpOnly 标志的问题。
【解决方案2】:

客户端 Java 插件始终咨询浏览器以验证是否需要在请求中发送 cookie。有关 Java 插件中 cookie 支持的详细信息,请参阅Java deployment guide

在一种情况下不会发送 cookie,即 Web 服务器在 cookie 上设置了HttpOnly 标志。在这种情况下,applet 类的 HTTP 请求将不包含 cookie 标头,因为 Java 插件将无法访问 cookie。

【讨论】:

  • Vineet,我在未发送的 cookie 上设置了 HttpOnly 标志。删除该标志解决了我的问题。非常感谢!
  • 不客气。几周前刚遇到同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多