2301_78845794 2024-10-13 20:05 采纳率: 0%
浏览 43
已结题

Chrome Manifest扩展引用Ajax-hook库拦截请求失败

通过kimi.ai获知可通过Chrome扩展程序Manifest API引用Ajax-hook库来拦截全局Ajax请求。

部署Manifest.json如下:

{
    "manifest_version":2,
    "name":"xxx",
    "description":"xxx",
    "version":"1.0",
    "icons":{
        "16":"image/PT_48.png",
        "32":"image/PT_48.png",
        "48":"image/PT_48.png",
        "128":"image/PT_48.png"
    },
    "background":{
        "scripts":["ajax-hook.min.js","background.js"]   //数组中按顺序加载
//        "persistent":false  //??
    },
    "permissions":["contextMenus","webRequest","webRequestBlocking","<all_urls>","activeTab","scripting","tabs"],
    "content_scripts":[{
        "matches":["<all_urls>"],    //匹配,该代码表示可以对所有url地址进行注入,可用通配符*和?//
        "js":["jquery.js","ajax-hook.min.js","content1.js"],
        "run_at":"document_start",
//        "all_frames":true,
        "world":"MAIN"
    }],
    "web_accessible_resources":["ajax-hook.min.js","jquery.js"]
}

背景脚本Backgroud.js简单编写如下:

var ah=chrome.extension.getBackgroundPage().ah;
console.log(ah);   //本地同目录已存ajax-hook.min.js,同时确认控制台有正常输出
console.log(typeof ah);
ah.proxy({
   onRequest:(config,handler)=>{
      console.log('12345');
      handler.next(config);
   },
   onError:(err,handler)=>{
      console.log('1234');
      handler.next(err);
   },
   onResponse:(response,handler)=>{
      console.log('123');
      handler.next(response);
   }
});

上述代码根据kimi.ai演示所编写,manifest.json和background.js写的就上面这些内容,且本地同目录下已存ajax-hook.min.js,同时确认控制台console.log(ah)正常输出对象,但通过网页发起xhr ajax请求时,并没有输出12345,验证失败,请教大爹指导分析一下原因

  • 写回答

30条回答 默认 最新

  • 专家-司宇[在线] 2024-10-13 20:06
    关注
    获得0.15元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    在CHROME扩展中,可以通过CHROME扩展程序MANIFEST API引用AJAX-HOOK库来拦截全局AJAX请求。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 创建了问题 10月13日