当前位置: 首页 > 知识库问答 >
问题:

当连接到WebSocket时,如何覆盖Chrome中的原始标头?

计向晨
2023-03-14

我正在尝试连接到外部web套接字服务器,该服务器不是我自己运行的。我想从localhost javascript文件连接到它,因此origin头的值为null。

我知道这是一项打击跨网站伪造的措施。然而,因为我在localhost,我应该能够伪造这一点,通过让Chrome发送自定义的Origin标头。

可能吗?(如果我需要延期,可以)

如果没有,实现上述目标的最佳选择是什么?谢谢你。

共有3个答案

龙星渊
2023-03-14

据我所知,这是不可能的,它会打破安全警卫对CSRF在Chrome。

如果你能做到这一点,XHR的整个概念就会分崩离析。

这里有一个扩展,您可以使用它动态地操纵头,但到目前为止,我还无法让它操纵套接字头。

如果你想了解更多,请看这里。

但这并不能阻止你实现你自己的客户端(代替chrome),在那里你可以发送任何你想要的头,不确定这是否对你有帮助,对不起。

诸葛嘉熙
2023-03-14

Origin头是由用户代理自动设置的头之一(作为浏览器实现的一部分),不能通过编程或扩展进行更改。这是有意义的,因为web服务提供商不能允许来自本地主机的随机连接。

只有从web服务提供商明确接受的主机连接到外部WebSocket时,才能连接到该WebSocket。许多标头不可信(因为它们可以被覆盖),但Origin的情况并非如此,因为它不仅为用户提供了安全性,而且为服务提供商提供了防止不必要连接的安全性。

秦经义
2023-03-14

网页无法更改源标题,但扩展可以通过chrome修改请求标题。WebRequestAPI。但是此API不支持ws://wss://,因此,除非服务器还支持通过http的其他通信方式(例如长轮询),否则这没有帮助。

不过仍然有一个解决方案:只需在iframe(例如https://example.com/favicon.icohttps://example.com/robots.txt)并使用内容脚本从此处打开WebSocket。

 类似资料:
  • Curl具有手动指定主机解析到哪个IP的功能。例如: 这在使用HTTPS时特别有用。如果它只是一个HTTP请求,我可以通过直接指定IP地址并添加主机头来实现同样的效果。但在HTTPS中,这将中断连接,因为SSL证书主机将与IP地址而不是主机头进行比较。 我的问题是,如何在Java中实现同样的事情?

  • 问题内容: 尝试使用socket.io- client连接到用Go编写的websocket服务器。我已经使用节点WebSocket库(npm)成功连接。因此,有效的Websocket代码如下所示: 非常简单并且有效-另一端的套接字以设定的频率发送消息。但是我最初尝试使用(npm),但是无法继续使用。它肯定将websocket列为其首选传输,但是该死,如果我能连接它的话: 连接永远不会发生,因此不会

  • 我想在使用Html Unit时覆盖DNS解析,以便我可以测试负载均衡器后面的显式服务器。这应该在不更改etc/hosts文件的情况下完成。 这个问题得到了一个答案,如何用普通的java解决这个任务:如何在Java的HTTP连接中覆盖DNS 但我需要一个Html单元的解决方案。 Html单元使用apache httpclient。可以改变httpclient的连接管理器吗?(参见上面的其他问题)

  • 问题内容: 我的代码如下: 但是,当我使用tcpdump登录传出程序包时,http头“主机”为1.0.0.25。 可能是在发送过程的稍后阶段覆盖了HTTP标头“主机”,如果可以的话,如何避免这种行为。 问题答案: 最后一条评论解决了我的问题: 或在VM启动时:

  • 问题内容: 我想在用户连接到Spring WebSocket时向其发送消息, MyChannelInterception类为 通过这一点,我在收到新连接的用户,但该方法的信息中不将消息发送到新的登录用户。 问题答案: 我将创建侦听器并在内部使用。 顺便说一句,仅被调用一次(不适用于每个连接的用户)。因此,您必须处理拦截器中的发送消息。 尝试这样的事情: 我希望这个能帮上忙

  • 问题内容: 我有一个要覆盖的函数,但也有一个要根据上下文按顺序执行的功能。例如,有时在生成页面时,我会想要像这样覆盖: 有时像这样: 我如何从最重要的方面得到它?可能吗 我知道很多人都建议不要以这种方式替代替代。我在问这种方式。 问题答案: 您可以执行以下操作: 在匿名函数内部进行声明可以防止其混乱全局名称空间,但可以在内部函数中使用它。 就像评论中提到的Nerdmaster一样,一定要在最后加上