我在Chrome扩展程序中执行后台任务,执行一些轮询/检查。在错误的情况下,我想使用不同的CDN服务器重试检查以验证它是否是站点范围的问题或仅受影响的CDN节点。挑战在于如何控制要发送到哪个CDN节点。
e.g。假设我正在检查www.company.com,通常由server21.cdn.co提供服务
现在,如果失败,我想检查server5.cdn.co和server10.cdn2.co是否有相同的内容,看看是否存在相关性。
这些检查是使用XMLHttpRequest完成的,但我找不到指定每个请求使用哪个主机/代理的方法。
我不想“劫持”整个浏览器的代理服务器设置,因为这会导致所有其他页面/标签失败。
答案 0 :(得分:1)
如果在DNS级别执行负载均衡(最有可能),则根本不会影响您实际联系的服务器。
答案 1 :(得分:1)
为了澄清,不能这样做,因为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
不是一个选项!