Pracuję nad rozszerzeniem, które analizuje kanał RSS gmss dla użytkowników. Pozwolę użytkownikom na podanie nazwy użytkownika/hasła, jeśli nie chcą pozostać zalogowani. Ale powoduje to wielokrotne logowanie, jeśli użytkownik jest zalogowany, a podana nazwa użytkownika/hasło dotyczy innego konta. Dlatego chcę unikać wysyłania plików cookie, ale nadal mogę wysyłać nazwę użytkownika/hasło w wywołaniu send().Czy istnieje sposób, aby nie wysyłać plików cookie podczas tworzenia obiektu XMLHttpRequest na tym samym początku?
Odpowiedz
Możesz to zrobić, korzystając z chrome.cookies module. Chodzi o to, aby uzyskać aktualne cookies je zapisać, usunąć je z magazynu plików cookie w przeglądarce, wyślij swoją prośbę, a wreszcie przywrócić je:
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
Alternatywnie, prostszym rozwiązaniem jest, aby otworzyć okno incognito, który wyśle żądanie, używając chrome.windows module, ale to uniemożliwi komunikację z resztą rozszerzenia. Należy pamiętać, że być może trzeba będzie zmienić właściwość Twój manifest incognito
do split
:
var incognito_window = {
"url": "incognito.html",
"focused": false, // do not bother user
"incognito": true
}
chrome.windows.create(incognito_window);
Począwszy od Chrome 42, fetch
API pozwala rozszerzeń Chrome (i aplikacji internetowych w ogóle) do wykonywania żądań cookies mniej. HTML5 Rocks offers an introductory tutorial on using the fetch API.
Zaawansowana dokumentacja na temat fetch
jest w tej chwili dość skromna, ale API interface from the specification to świetny punkt wyjścia. Algorytm pobierania opisany poniżej interfejsu pokazuje, że żądania generowane przez fetch
nie mają domyślnie referencji!
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);
});
Jeśli chcesz naprawdę anonimowe żądania, można również wyłączyć cache:
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. Nie można wysyłać plików cookie z file_get_contents
- 2. Jeśli istnieje odpowiedź na cookie ustawiane przez xmlhttprequest, czy przeglądarka uszanuje ją i ustawi plik cookie?
- 3. W Symfony, Czy istnieje sposób na tworzenie plików PDF w tym samym czasie?
- 4. Nie można wysyłać plików cookie za pomocą programu RestSharp
- 5. Czy istnieje sposób konfigurowania formatu klanga, aby zachować zagnieżdżone deklaracje przestrzeni nazw w tym samym wierszu?
- 6. Czy istnieje sposób odczytu dwóch plików w tym samym czasie w python? (z tą samą pętlą?)
- 7. Jaka jest różnica między CoCreateInstance() i CoGetClassObject() podczas tworzenia obiektów na tym samym komputerze?
- 8. Nieoczekiwane zachowanie od shared_from_this podczas tworzenia wielu shared_ptr „rodziny” na tym samym obiekcie
- 9. Nadpisanie java podczas tworzenia obiektu
- 10. czy istnieje sposób, aby usunąć powielania w tym kodzie
- 11. Przesyłanie wielu plików w tym samym żądaniu
- 12. importowanie plików GO w tym samym folderze
- 13. OWIN Uwierzytelnianie plików cookie między ASP.NET MVC i Webforms Aplikacje z tym samym kodem MachineKey
- 14. Czy istnieje sposób na zatrzymanie Symfony2 wysyłania plików cookie sesji dla określonych ścieżek?
- 15. Czy istnieje krótszy sposób na żądanie pliku w tym samym katalogu w ruby?
- 16. Jak skonfigurować vim tak, aby nie wstawiał komentarzy na początku linii podczas edycji plików Pythona
- 17. Scala: czy istnieje sposób tworzenia typów wbudowanych?
- 18. Czy istnieje sposób, aby usunąć cały obiekt z obiektu js
- 19. Czy istnieje zdarzenie System podczas tworzenia procesów?
- 20. Czy wiele plików może być przechowywanych w tym samym bloku?
- 21. Czy istnieje sposób, aby sprawdzić, czy wartości nie numerycznej makro
- 22. Obsługa plików cookie w Google Apps Script - jak wysyłać pliki cookie w nagłówku?
- 23. Podczas debugowania istnieje sposób sprawdzenia, czy obiekt jest inną instancją?
- 24. Czy muszę ujawnić konstruktora w WCCont DataContract, aby działał podczas tworzenia obiektu na kliencie?
- 25. Czy istnieje sposób, aby zleceniowe NSWindow spacjami
- 26. Czy "żądania" plików cookie muszą być ustawione w bezpieczny sposób?
- 27. Czy istnieje sposób, aby wyczyścić django.db.connection.queries?
- 28. Czy istnieje sposób, aby mój program delphi czekał na skopiowanie dużej liczby plików?
- 29. Czy istnieje sposób, aby przejść dotyka na iPhone?
- 30. Czy mogę przesłonić właściwości obiektu definicji parametru podczas jego tworzenia?
powinien usunąć cookie.hostOnly ';' i 'usunięcia cookie.session;' 'linie faktycznie usuwać my_cookie_store [i] .hostOnly; 'i' delete my_cookie_store [i] .session; 'odpowiednio? – Mala