私はgmailのRSSフィードを解析する拡張機能に取り組んでいます。私は、ユーザーがサインインしたままにしたくない場合は、ユーザー名/パスワードを指定することができます。しかし、ユーザーがサインインしていて、提供されているユーザー名/パスワードが別のアカウントのものであれば、これは複数のサインインのために破棄されます。だから、私はクッキーを送信することを避けたいが、send()コールでユーザー名/パスワードを送信できるようにしたい。XMLHttpRequestを同じ起点にするときにクッキーを送信しない方法はありますか?
5
A
答えて
3
これは、chrome.cookies moduleを使用して行うことができます。アイデアは、現在のクッキーを取得し、それらを保存し、ブラウザのCookieストアからそれらを削除し、あなたのリクエストを送信し、最後にそれらを復元することです:
var cookies_temp = []; // where you put the cookies first
var my_cookie_store = []; // the cookies will be there during the request
var details = {/*your code*/}; // the first parameter for chrome.cookies.getAll()
var start_kidnapping = function(cookies) {
cookies_temp = cookies.slice();
kidnap_cookie();
};
var kidnap_cookie = function() {
// This recursive function will store the cookies from cookies_temp to
// my_cookie_store and then remove them from the browser's cookie store.
if (cookies_temp.length == 0) { // when no more cookies, end recursion
send_request();
};
else {
var cookie = cookies_temp.pop();
// We store url as a property since it is useful later.
// You may want to change the scheme.
cookie.url = "http://" + cookie.domain + cookie.path;
my_cookie_store.push(cookie); // save it
chrome.cookies.remove({url: cookie.url, name: cookie.name}, kidnap_cookie);
};
};
var send_request = function() {
// Send your request here. It can be asynchronous.
for (var i = 0, i < my_cookie_store.length; i++){
delete cookie.hostOnly; // these 2 properties are not part of the
delete cookie.session; // object required by chrome.cookies.set()
// note that at this point, cookie is no longer a Cookie object
chrome.cookies.set(my_cookie_store[i]); // restore cookie
};
my_cookie_store = []; // empty it for new adventures
};
chrome.cookies.getAll(details, start_kidnapping); // start
また、簡単な解決策がお送りしますシークレットウィンドウを開くことですこのリクエストではchrome.windows moduleを使用していますが、これにより残りの内線番号との通信ができなくなります。あなたがsplit
にマニフェストのincognito
プロパティを変更する必要があることに注意してください:クローム42のよう
var incognito_window = {
"url": "incognito.html",
"focused": false, // do not bother user
"incognito": true
}
chrome.windows.create(incognito_window);
4
、fetch
APIはCookieのないリクエストを実行するにはChromeの拡張機能(および一般的なWebアプリケーションを)ことができます。 HTML5 Rocks offers an introductory tutorial on using the fetch API。
fetch
に関する詳細なドキュメントは現時点ではまばらですが、API interface from the specificationはすばらしい出発点です。インターフェイスの下に記載されているフェッチアルゴリズムは、デフォルトでfetch
によって生成されたリクエストにクレデンシャルがないことを示しています。
fetch('http://example.com/').then(function(response) {
return response.text(); // <-- Promise<String>
}).then(function(responseText) {
alert('Response body without cookies:\n' + responseText);
}).catch(function(error) {
alert('Unexpected error: ' + error);
});
あなたが本当に匿名の要求をしたい場合、あなたはまた、キャッシュを無効にすることができます: `cookie.hostOnlyを削除する必要があります
fetch('http://example.com/', {
// credentials: 'omit', // this is the default value
cache: 'no-store',
}).then(function(response) {
// TODO: Handle the response.
// https://fetch.spec.whatwg.org/#response-class
// https://fetch.spec.whatwg.org/#body
});
関連する問題
- 1. XMLHttpRequestオブジェクトでバイナリデータを送信する方法はありますか?
- 2. 同じトピックの異なるユーザーに異なるバッジカウントを送信する方法はありますか?
- 3. (AJAX)POSTデータをURLに送信し、同じURLにデータをリダイレクトする方法はありますか?
- 4. ChromeCastカスタムレシーバのXMLHttpRequestがCookieヘッダーを同じドメインに送信しない
- 5. Tornado:同じクラスに異なるリクエストを送信する方法
- 6. 同時XMLHttpRequestを送信する
- 7. リクエストに応じてクッキーをcrawler4jで送信しますか?
- 8. 電子メール入力と送信ボタンは同じ行にありますか?
- 9. 同じストリームで異なるエンコードデータを送信する方法は?
- 10. フォームを送信して同じページに留まる方法
- 11. 送信ボタンをクリックして同じページに留まる方法
- 12. webworkerでxmlhttprequestを継続的に送信する方法は?
- 13. 同じコントローラから同じ時刻にヴァルスを送り、モデルを受信する方法は?
- 14. altbeaconライブラリを使用してibeaconとscan ibeaconを同時に送信する方法はありますか?
- 15. XMLHttpRequestとasp.net MVCを使用して、大きなBLOBをサーバーにポストする方法はありますか?
- 16. knockoutjsの送信バインディングがEnterキーを押したときにフォームを送信しないようにする方法はありますか?
- 17. ユーザーがメッセージを送信し、それが英雄のアイドル状態になっているときにアプリケーションを起動する方法はありますか?
- 18. 同じ起点ポリシーでサーバサイドコードを実行することはできますか?
- 19. GUIまたはコマンドラインから同じアプリケーションを起動するより良い方法はありますか?
- 20. サファリと同じサブドメイン名が、クロムをリモートサーバにHTTPリクエストを送信するときにFirefoxがクッキーを送信しませんが
- 21. URLにアクセスしたときにactorにtellメッセージを送信する方法はありますか?
- 22. BackgroundWorkerを起動した後にデータを送信する方法はありますか?
- 23. 送信電子メールをプログラムとして送信済みとしてマークする方法はありますか?
- 24. フォームデータをC#コードに "送信"してから、C#でデータを "送信"する方法はありますか?
- 25. ASP.Net MVC3:同じフィールドに異なる値を送信する方法は?
- 26. Node.js passport-jwtクッキーにトークンを送信する方法は?
- 27. フォームポストとajaxポストを同時に送信する問題はありますか?
- 28. Tkinterボタンをウィンドウと同じ色にする方法はありますか?
- 29. 画像をナビゲーションバーのサイズと同じにする方法はありますか?
- 30. クライアントに同じPHPのフォームを送信する方法
を;'と 'cookie.sessionを削除;'ラインが実際に 'my_cookie_storeを削除します[i] .hostOnly; 'および' delete my_cookie_store [i] .session; '? – Mala