web-dev-qa-db-de.com

Wie man Cookies auf dem Winkel 4+ verwendet, um Get und Post zu erstellen

Können Sie ein Beispiel oder eine Referenz zur Verwendung von Cookies bei angle4 + angeben, wenn Sie GET und POST ausführen? On AngleJS ist dokumentiert, aber nicht auf Angular.io. Jedes Äquivalent dazu: "//code.angularjs.org/X.Y.Z/angular-cookies.js" auf Angular4 + Vielen Dank im Voraus 

3
Crying Freeman

Am Ende habe ich so etwas geschrieben: 

 public postSomethingToServer(myUrl: string): Observable<any> {
    var body = `{"username":"ddd","password":"ddd"}`;
    const headers = new Headers();
    headers.append('Content-Type', 'application/json');
    let options = new RequestOptions({ headers: headers, withCredentials: true });
    return this.http.post(myUrl, body, options)
      .map((response) => {

        return response.json(); 
      })
      .catch(this.handleError);
  }

Um das Cookie in der Anfrage zu senden, war es erforderlich, dass das Objekt (withCredentials: true) an die Klasse RequestOptions übergeben wurde.

Für ASP Net Core-Anwendungen, wenn Client und Server auf verschiedenen Servern ausgeführt werden, die zum Konfigurieren von CORS erforderlich sind 

app.UseCors(config =>
                config.AllowAnyOrigin()                    
                      .AllowCredentials());

Falls andere das gleiche Problem haben.

0
Crying Freeman

Wenn Sie den neuen Angular 5 verwenden, wurde etwas eingeführt, das als HttpInterceptor bezeichnet wird ( https://angular.io/guide/http#intercepting-all-requests-or-responses )

Sie können einen Abfangjäger erstellen, der Ihren Cookie erhält und entsprechend behandelt.

import {Injectable} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http';

    function getCookie(name) {
     const splitCookie = cookie.split(';');
     for (let i = 0; i < splitCookie.length; i++) {
      const splitValue = val.split('=');
       if (splitValue[0] === name) {
         return splitValue[1];
       }
     }
     return '';
    }

    @Injectable()
    export class AuthInterceptor implements HttpInterceptor {
      constructor(private auth: AuthService) {}

      intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        // Get the auth header from the service.
        const authHeader = getCookie('auth');
        // Clone the request to add the new header.
        const authReq = req.clone({headers: req.headers.set('Authorization', authHeader)});
        // Pass on the cloned request instead of the original request.
        return next.handle(authReq);
      }
    }

Sie können eine solche Bibliothek auch verwenden, um Cookies zu behandeln: https://github.com/salemdar/ngx-cookie

6
Everest