Java 在浏览器中发送不符合RFC的HTTP请求

Java 在浏览器中发送不符合RFC的HTTP请求,java,silverlight,http,plugins,browser,Java,Silverlight,Http,Plugins,Browser,我需要在浏览器中发送不符合RFC的HTTP请求。我需要在不编码URL的情况下发送GET请求。我不希望空白被编码为%20。我知道浏览器不应该发送这样的请求,但这正是我的项目所需要的 我想到使用以下想法: XHR-自动执行URL编码,并且没有办法对其进行操作 Java/Silverlight小程序-在新浏览器选项卡中打开URL不允许传递未编码的URL。据我所知,小应用程序只需将URL地址传递给浏览器,浏览器就会打开它 Java/Silverlight小程序-发送原始HTTP请求并尝试在浏览器选项卡中

我需要在浏览器中发送不符合RFC的HTTP请求。我需要在不编码URL的情况下发送GET请求。我不希望空白被编码为%20。我知道浏览器不应该发送这样的请求,但这正是我的项目所需要的

我想到使用以下想法:

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

    Host:example.com

    在HTTP头中,它看起来像 获取HTTP1.1

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


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

    你知道这个问题就要来了,但是。。。为什么您需要一个打破惯例的请求?发布一个请求字符串示例。@corsiKa,我只知道有人会坚持要知道答案;)。答案是:跨站点脚本。我需要它来利用这个漏洞。当然,这是合法的。我测试的服务器理解格式错误的请求(我在最初的帖子中添加了示例),并将“abc HTTP/1.1”部分作为HTTP版本变量进行威胁。我同意。关于您的建议-如果我使用socket并将数据发送到服务器,则无法在浏览器中显示响应。我需要浏览器认为响应来自服务器,以便使用响应中包含的脚本访问DOM。@user2498474为什么不将输出结果通过管道传输到.html文件并用浏览器打开它?@corsiKa它无法按预期工作。用户不应被迫创建任何文件和打开任何文件,但更重要的是,打开HTML将不允许访问源服务器响应的DOM(SOP禁止此类访问)。只需使用Java通过套接字将数据发送回浏览器。@SamSmith它不允许访问DOM。