私は、アクティビティを非表示にする 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 呼び出しが受け取るデータは正しいです。つまり、2 番目のリクエストが返すデータです。
ただし、プラグインが Facebook で実行されると、最初のリクエストは保留中として表示されず、代わりにキャンセルされ、2 番目のリクエストはまったく送信されません。
これは私が使用するコードです(おおよそ):
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 がリダイレクトを検出する方法を見つけたように見えますが、この質問 on Stackoverflowによると、それは不可能であると考えられています。
では、彼らはどのようにそれを行い、どうすればそれを回避できますか? 前もって感謝します。