【问题标题】:Chrome extension background XMLHttpRequest proxy serverChrome 扩展后台 XMLHttpRequest 代理服务器
【发布时间】:2015-08-03 16:38:37
【问题描述】:

我在 Chrome 扩展程序中有一个后台任务,它执行一些轮询/检查。在错误情况下,我想使用不同的 CDN 服务器重试检查,以验证它是站点范围的问题还是只是受影响的 CDN 节点。挑战在于如何控制发送到哪个 CDN 节点。

例如假设我正在检查 www.company.com,通常由 server21.cdn.co 提供服务

现在如果失败,我想检查 server5.cdn.co 和 server10.cdn2.co 是否有相同的内容,看看是否存在相关性。

这些检查是使用 XMLHttpRequest 完成的,但我找不到指定每个请求使用哪个主机/代理的方法。

我不想“劫持”整个浏览器的代理服务器设置,因为它会导致所有其他页面/选项卡失败。

【问题讨论】:

  • 什么代理和服务器设置? AFAIK 请求者无法控制使用哪个 CDN 服务器。这是 CDN 自己决定的事情,因为这是 CDN 的全部意义所在,不是吗?
  • 这个要求的重点是检查CDN。我知道 CDN 节点的 IP 地址是什么,我不需要查询 DNS。我只需要能够控制用于连接的 IP。

标签: google-chrome-extension xmlhttprequest


【解决方案1】:

如果是在 DNS 级别执行负载平衡(最有可能),则根本无法影响实际联系的服务器。

【讨论】:

  • 请详细说明“那个”是什么意思。也就是说,您的具体意思是您无法控制 XMLHttpRequest 使用的代理服务器?
  • 我会接受这个作为答案,并详细说明自己。这无法完成,因为 XMLHTTPRequest 禁止覆盖 Host 标头。见security.stackexchange.com/questions/46702/…。可以通过curl 完成,如果我没有被困在 Chrome 扩展程序中:drewish.com/2010/03/29/…
  • @rgareth 如果您将其作为第二个答案发布,我不介意投票
【解决方案2】:

澄清一下,这是无法做到的,因为 XMLHTTPRequest 禁止覆盖请求中的 Host 标头。请参阅 https://security.stackexchange.com/questions/46702/how-can-i-control-the-content-of-the-http-host-header-in-requests-issued-from-my/ 了解原因。

如果不是因为这个安全问题,从概念上/技术上来说很容易做到。例如curl: curl --verbose --header '主机:www.example.com' 'http://10.1.1.36/the_url_to_test'

但正如问题中提到的,我们被困在 Chrome 扩展程序中,所以curl 不是一个选项!

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多