2013-06-18 112 views
0

我需要在浏览器中发送不符合RFC的HTTP请求。我需要发送一个GET请求,但不对URL进行编码。我不希望空格被编码为%20。我知道浏览器不应该发送这样的请求,但这正是我需要的项目。在浏览器中发送不符合RFC的HTTP请求

我想用以下思路:

  1. XHR - 自动执行URL编码,并没有办法对其进行操作。
  2. Java/Silverlight小程序 - 在新浏览器选项卡中打开URL不允许传递未编码的URL。据我所知,applets只是将URL地址传递给浏览器,它是打开它的浏览器。
  3. Java/Silverlight小程序 - 发送原始HTTP请求并尝试在浏览器选项卡中显示结果。可能吗?如果是这样,浏览器会将响应视为有效的源服务器响应?我需要访问包含DOM(在服务器响应)脚本的DOM,所以它不能打破SOP。

样品要求:
GET资源ABC HTTP/1.1
主持人:example.com

+0

你知道这个问题即将到来,但是......你为什么需要一个违反约定的请求? – corsiKa

+0

发布示例请求字符串。 – JoshDM

+0

@corsiKa,我只知道有人会坚持知道答案;)。答案是:跨站点脚本。我需要它来利用这个漏洞。这当然是合法的。 – user2498474

回答

0

在HTTP头,它看起来像 GET http://www.stackoverflow.com/ HTTP1.1

如果你不” t转义URL中的空格,它会破坏HTTP标头。没有HTTP兼容的服务器将能够理解请求。

但是,如果您确实有这样做的合法理由,则可以将数据写入套接字并将其发送到服务器。有关更多信息,请参阅Oracle教程上的Java套接字。

+0

我测试的服务器了解格式错误的请求(我在我的初始文章中添加了示例)并威胁将'abc HTTP/1.1'部分作为HTTP版本变量。我确定。关于你的建议 - 如果我使用套接字并将数据发送到服务器,我无法在浏览器中显示响应。我需要浏览器考虑源自服务器的响应,以便通过包含在响应中的脚本访问DOM。 – user2498474

+0

@ user2498474为什么不将输出的结果传输到.html文件并使用浏览器打开它? – corsiKa

+0

@corsiKa它不会按预期工作。用户不应该被迫创建任何文件并打开任何文件,但更重要的是打开HTML不允许访问原始服务器响应的DOM(SOP禁止这种访问)。 – user2498474