【问题标题】:Substituting AJAX call for another将 AJAX 调用替换为另一个
【发布时间】:2026-01-24 22:55:01
【问题描述】:

Chrome 中是否有任何简单的方法可以在不更改 DNS 的情况下将 AJAX 调用重定向到另一台服务器? (例如:对http://domain.com/page.html 的调用将被定向到http://localmachine.com/page.html

我知道这可以通过更改 DNS 来完成,但这并不能解决我的问题,因为当我只想捕获单个 URL 时,它会将所有 domain.com 请求发送到本地机器。

提前致谢!

PS:如果有人知道已经这样做的扩展,那将非常受欢迎。如果没有,我会尝试自己开发一个 chrome 扩展

添加:清单文件(在apsillers评论后):

{
  "name": "My Extension",
  "version": "0.1",
  "background": {
  "script": "background.js"
  },
  "permissions" : [
    "webRequest",
    "webRequestBlocking",
    "background",
    "*://*/*"
  ],
  "manifest_version": 2
}

【问题讨论】:

    标签: ajax google-chrome google-chrome-extension


    【解决方案1】:

    使用webRequest API中的onBeforeRequest

    chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
            // only redirect if accessing this page via Ajax
            if(details.type == "xmlhttprequest") {
                return {redirectUrl:"http://localmachine.com/page.html"};
            }
        },
        {urls: ["http://domain.com/page.html"]},
        ["blocking"]);
    

    这会设置一个重定向脚本来捕获对http://domain.com/page.html 的所有Ajax 请求,并导致它们从http://localmachine.com/page.html 返回结果。浏览器无法知道重定向已经发生;即,它认为结果确实是从domain.com 获取的。

    【讨论】:

    • 非常感谢您的回答,apsillers!我已经按照你说的做了,更新了清单(见上文)但仍然不起作用,知道为什么吗? (注意:控制台上没有错误信息)