In realtà, il nostro backend autentica la richiesta utilizzando Cookie nell'intestazione della richiesta. So che rifiuterà se imposto un header "Cookie". Quindi, c'è un modo per inviare un cookie al back-end?Come inviare "Cookie" nell'intestazione della richiesta per tutte le richieste in Angular2?
risposta
Immagino che ci sia una fase in cui chiedi al server di autenticarti. Seguendo questo (e se l'autenticazione ha esito positivo), il server restituirà un cookie nella risposta. Il browser memorizzerà questo cookie e lo invierà di nuovo per ogni chiamata.
Detto questo, nel caso di richieste cross domain (CORS), è necessario impostare lo withCredentials
di XHR su true
per consentire ai browser di aggiungere cookie nelle richieste.
Per abilitare questo con Angular2, abbiamo bisogno di estendere la classe BrowserXhr
come descritto di seguito:
@Injectable()
export class CustomBrowserXhr extends BrowserXhr {
constructor() {}
build(): any {
let xhr = super.build();
xhr.withCredentials = true;
return <any>(xhr);
}
}
e sovrascrivere il provider BrowserXhr
con l'estesa:
bootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(BrowserXhr, { useClass: CustomBrowserXhr })
]);
Vedi questa domanda per maggiori dettagli :
Edit (seguente commento s la freaker')
Da RC2, è possibile utilizzare la proprietà withCredentials
direttamente all'interno della configurazione richiesta, come descritto di seguito:
this.http.get('http://...', { withCredentials: true })
Modifica (seguendo il [maxou commento)
Ricordarsi di includere conCredentials: true su ogni richiesta.
- 1. Set-cookie in risposta non impostato per richiesta post Angular2
- 2. Passa cookie come parte della richiesta node.js
- 3. Filtro servlet per tutte le richieste
- 4. Come inviare le richieste con JSONs in unità di test
- 5. Come utilizzare le richieste per inviare una richiesta PATCH con le intestazioni
- 6. nodejs esegue un'azione comune per tutte le richieste
- 7. AngularJS intercetta tutte le richieste $ $
- 8. CORS in grails - Tutte le richieste falliscono?
- 9. Come sapere quando tutte le chiamate HTTP Angular2 sono finite
- 10. $ http non invia cookie in Richieste
- 11. Come aggiungere l'intestazione per tutte le richieste ember RESTAdapter
- 12. python: urllib2 come inviare cookie con richiesta urlopen
- 13. CURL: come conservare i cookie tra le richieste?
- 14. Phoneegap, cookie, richieste cross domain
- 15. Come inviare cookie con node-fetch?
- 16. Come inviare richieste su ssl?
- 17. Aggiungi cookie per l'aggiornamento di 2 richieste
- 18. Come inviare l'intestazione della richiesta SOAP in Java?
- 19. Configurare RSpec per utilizzare Capybara.javascript_driver per tutte le specifiche della richiesta
- 20. È richiesta una richiesta Ajax per l'invio di cookie?
- 21. Come mostrare tutte le stringhe di traduzione richieste in Rails?
- 22. IE alternativa a window.stop() (annulla tutte le richieste in sospeso)
- 23. Come inviare richieste consecutive con HTTP keep-alive in node.js?
- 24. Come inviare un cookie in un URLConnection?
- 25. Come intercettare le richieste AJAX in QtWebKit?
- 26. ASP.NET MVC 4 intercetta tutte le richieste in entrata
- 27. Forza tutte le richieste ricevute Content-Type a JSON
- 28. fermare iOS Alamofire tutte le richieste
- 29. Come inviare richieste di attività Outlook per posta senza Outlook?
- 30. Convalida del contenuto della richiesta di richieste
Questa funzione è stata aggiunta a angular2 ora. Ora puoi semplicemente fare qualcosa come 'http.get (url, {withCredentials: true})' quindi questa comoda soluzione non è più necessaria (a partire da 2.0.0-rc4 o precedenti). – freaker
Sì, hai ragione. Sono stato aggiunto in RC2. Ho aggiornato la mia risposta di conseguenza. Grazie mille per averlo fatto notare ;-) –
mi sembra che usando 'withCredentials', il' Set-Cookie' nella risposta sarà impostato dal client, ma il client non invia ancora 'Cookie' in la richiesta (che è stata impostata con una richiesta precedente) – maxbellec