我正在开发一个隐藏活动的Facebook扩展程序(例如,20分钟前的最后一次活动)。因此,我正在尝试重定向表单
的请求https://0-p-06-ash2.channel.facebook.com/pull?idle=2&state=active& ...
表单
的请求https://0-p-06-ash2.channel.facebook.com/pull?idle=50000& ...
使用webRequest API,onBeforeRequest。现在,当我在本地测试页面上尝试我的重定向技术时,我已经完成了自己,我发送了一个ajax请求并随后使用该插件重定向它,它完美地工作。网络检查员将第一个请求显示为待处理,然后添加新请求。 ajax调用收到的数据是正确的,i。即第二个请求应该返回什么。
但是,当插件在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找到了一种在实际发送请求之前检测重定向的方法,但根据this question on Stackoverflow,它不应该是可能的。
那么他们是如何做到的,我该如何规避呢?提前谢谢。