在Angular应用中发送自定义cookie,需要将自定义cookie作为HttpHeaders传递给HttpClient的方法中。以下是具体实现步骤:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class CookieService {
setCookie(name: string, value: string, expireDays: number) {
const d = new Date();
d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);
const expires = 'expires=' + d.toUTCString();
document.cookie = name + '=' + value + '; ' + expires;
}
getCookie(name: string) {
const cookies = document.cookie.split('; ');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].split('=');
if (cookie[0] === name) {
return cookie[1];
}
}
return '';
}
}
import { Component } from '@angular/core';
import { HttpHeaders, HttpClient } from '@angular/common/http';
import { CookieService } from '../cookie.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'my-app';
constructor(private http: HttpClient, private cookieService: CookieService) { }
sendRequest() {
const token = this.cookieService.getCookie('token');
const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);
const url = 'https://api.example.com/data';
this.http.get(url, { headers }).subscribe((response) => {
console.log(response);
});
}
}
以上代码示例演示了如何获取自定义cookie并将其包含在http header中发送。简而言之,需要使用Angular HttpInterceptor机制,在intercept()函数中处理请求头中加入已存储自定义cookie。