2011-12-01 78 views
6

我正在尝试为实现CORS的Web服务创建一些测试。所以,我需要发送Origin头文件。当我打电话给addRequestProperty("origin", origin)时,起源标题似乎没有出现在服务器上。我说'看起来' - 我有一个servlet遍历所有打印出来的头文件,并没有出现。我还没有一直到TCPMon或通过普通套接字连接发送请求。HttpUrlConnection是否检查某些标题,特别是Origin?

为HttpURLConnection的Javadoc中没有提到我见过的任何限制,但我可能跳过了关键的句子。这是一个众所周知的限制吗?

+0

你在运行你的servlet的是什么webserver?有没有代理或其他网络服务器? –

+0

你在设置'origin'还是'Origin'? – Gian

回答

6

我发现http://javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/net/www/protocol/http/HttpURLConnection.java.html

笔者,巧妙,决定禁止产地等CORS相关的头,而不实际执行CORS规范。这非常令人沮丧。

+1

查看该代码,可以使用'sun.net.http.allowRestrictedHeaders'系统属性来启用设置这些标题。 – jtahlborn

+0

是的,但只有当你愿意在你第一次连接之前设置它并永不改变它。幸运的是,Apache HttpClient是一个解决方案。 – bmargulies

+0

提供的链接不再有效。作为参考,这是一个更新的链接到[其中一条相关的行](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/net/www /protocol/http/HttpURLConnection.java#235)在grepcode。 –

相关问题