我正在为 Facebook 开发一个隐藏活动的扩展程序(例如 20 分钟前最后一次活动)。因此,我试图重定向表单的请求
https://0-p-06-ash2.channel.facebook.com/pull?idle=2&state=active& …</p>
对表格的要求
https://0-p-06-ash2.channel.facebook.com/pull?idle=50000& …</p>
使用 webRequest API,onBeforeRequest。现在,当我在自己制作的本地测试页面上尝试我的重定向技术时,我发送一个 ajax 请求并随后使用插件重定向它,它完美地工作。网络检查器将第一个请求显示为待处理,然后添加了一个新请求。ajax 调用接收到的数据是正确的,即第二个请求应该返回什么。
但是,当插件在 Facebook 上运行时,第一个请求不会显示为待处理,而是会被取消,并且根本不会发送第二个请求。
这是我使用的代码(大约):
var callback = function(details){
var ajaxURL = details.url;
if(ajaxURL.indexOf('pull?channel') > -1){ // find activity log request
var newURL = ajaxURL.replace('&state=active', '').replace(/idle\=[0-9]{0,}/gi, 'idle=50000');
return {redirectUrl: newURL};
}
return {cancel: false};
}
filter = {urls: ["<all_urls>"]};
chrome.webRequest.onBeforeRequest.addListener(callback, filter, ["blocking"]);
在我看来,Facebook 在实际发送请求之前找到了一种检测重定向的方法,但根据Stackoverflow 上的这个问题,这不应该是可能的。
那么他们是如何做到的,我该如何规避呢?提前致谢。