我很确定我记得读过 - 但是找不到链接了 - 关于这个:在一些ISP(包括美国至少一个大型ISP)上,有可能让用户的GET和POST请求出现来自不同的IP.
(请注意,这完全与编程有关,我将在下面举例说明)
我不是说你的IP地址在两个请求之间动态变化.
我在说这个:
IP 1: 123.45.67.89
IP 2: 101.22.33.44
Run Code Online (Sandbox Code Playgroud)
在相同的用户发出GET,那么一个帖子,然后再得到,然后再次发布和服务器看到这一点:
- GET from IP 1
- POST from IP 2
- GET from IP 1
- POST from IP 2
Run Code Online (Sandbox Code Playgroud)
因此,尽管它是同一个用户,但Web服务器会看到GET和POST的不同IP.
肯定看到HTTP是无状态协议,这是完全合法的吗?
我想找回关于某些ISP如何/为什么配置其网络以便可能发生这种情况的解释.
我问,因为有人要求我实施以下IP过滤器,我很确定它是从根本上破坏了代码(破坏了至少一个主要的美国ISP用户的破坏).
这是一个Java servlet过滤器,可以防止某些攻击.原因是:
" 对于任何会话过滤器检查请求中的IP地址是否与创建会话时使用的相同.因此,在这种情况下,会话ID不能被盗用于形成虚假会话."
http://www.servletsuite.com/servlets/protectsessionsflt.htm
但是我很确定这本身就是破坏的,因为有些ISP可能会看到来自不同IP的GET和POST.
在下面问题的接受答案中,一个具有13K + rep的SO常规建议使用"web bug"(不可缓存的1x1 img)来跟踪日志中的请求:
我怎么能用Java做到这一点?
基本上,我有两个问题:
如何确保1x1图像不可缓存(如何设置标题)?
如何确保这些1x1图像的查询将出现在日志中?
我正在寻找确切的代码段,因为我知道如何编写.jsp/servlet,我知道如何提供1x1图像:)
我的问题实际上是关于我应该写的确切的.jsp/servlet以及如何/需要做什么以便Tomcat记录请求.
例如,我打算使用以下映射:
<servlet-mapping>
<servlet-name>WebBugServlet</servlet-name>
<url-pattern>/webbug*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
然后使用引用"webbug.png"(或.gif)的img标记,那么如何编写.jsp/servlet?
我应该在日志中查找什么/在哪里?
我收到了文件,遗憾的是,我无法获得有关它们是如何生成的信息.我需要解析这些文件.
除了一个字符外,该文件完全是ASCII:0xDB(十进制表示219).
显然(从查看文件)这个字符是货币符号.我知道因为:
我认为在这些文件中,0xDB应该代表欧元符号(实际上非常有可能这个0xDB出现在欧洲符号应该出现的所有地方).
该文件的命令说,这有关文件:
ISO-8859 English text, with CRLF, LF line terminators
Run Code Online (Sandbox Code Playgroud)
一个hexdump都给出了这样的:
00000030 71 75 61 6e 74 20 db 32 2e 36 30 0a 20 41 49 4d |quant .2.60. AIM|
^^ ^
Run Code Online (Sandbox Code Playgroud)
这些文件通常都是通常格式化/可解析的.实际上我除了那个奇怪的0xDB字符外,还得到了所有的信息.
有谁知道发生了什么?货币符号(据说欧元符号)是如何成为0xDB的?
它既不是ISO-8859-1(又名ISO Latin 1)也不是ISO-8859-15,因为在这两种情况下代码点219对应于'Û'(正如Unicode代码点219是'具有CIRCUMFLEX'的LATIN CAPITAL LETTER U').
它不是扩展ASCII.
感谢回答的人,我意识到我确实在处理"MacRoman"中编码的文件:
所以我想知道:lib / charsets.jar中包含的字符集是否保证存在于所有1.5个JVM中?
http://download.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html
与UTF-8不同,x-MacRoman不存在于rt.jar中,而是存在于lib/charsets.jar中.我不太了解这种差异.
MacRoman,就像UTF8一样,保证在场吗?
PS:有人可以创建MacRoman标签会很棒.
我习惯使用属性文件,例如Ant.在哪里我可以简单地引用属性文件做类似的事情:
<property file="webapp_DO_NOT_COMMIT.properties"/>
Run Code Online (Sandbox Code Playgroud)
(该文件之所以如此命名是因为我们的DVCS配置为永远不会提交包含"DO_NOT_COMMIT"的文件以防止提交凭证/密码/等.)
这是一个非常简单的.properties文件示例:
passwd=brokencleartextpassword
Run Code Online (Sandbox Code Playgroud)
现在我想将一些配置放在我需要从我的Java代码访问的另一个类似的属性文件中.我该怎么办呢?
我还有另一个相关问题:是由任何规范定义的.properties文件的字符编码吗?
根据用户用于连接Java Webapp的操作系统/浏览器,自动提供.dmg或.exe文件的正确方法是什么?
我想在服务器端做,而不必使用任何JavaScript.
例如,如果,从OS X光机,我去:绝对扑克,然后点击"下载和播放"(这只是一个网站,有我在寻找的行为的一个例子),它提供了我的.dmg文件这是Safari自动下载的.
我正在寻找一个实用的解决方案:如果它适用于99%的用户,我很高兴.我不在乎,如果一些非常具体的操作系统/浏览器组合,这是行不通的,只要"大部分时间" Windows用户被送达的.exe和OS X用户的.dmg.