Angular:跨域请求携带 cookie

新建拦截器,设置 XMLHttpRequest:withCredentials 属性

1. 新建文件夹 http-interceptors

复制代码
该文件夹下可有多个不同用途的拦截器

2. 新建拦截器 common.interceptor.ts

typescript 复制代码
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";

@Injectable()
export class CommonInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        return next.handle(req.clone({
            withCredentials: true
        }));
    }

3. 用一个数组汇总起来,统一引入: index.ts (后续需要添加拦截器,只需加入到该数组即可)

typescript 复制代码
import { HTTP_INTERCEPTORS } from "@angular/common/http";
import { CommonInterceptor } from "./common.interceptor";

export const httpInterceptorProvides = [
    {
        provide: HTTP_INTERCEPTORS,
        useClass: CommonInterceptor,  //指定使用哪个拦截器
        multi: true  //表示可设置多个拦截器
    }
]

4. 引入拦截器使用: service.module.ts

typescript 复制代码
import { isPlatformBrowser } from '@angular/common';
import { InjectionToken, NgModule, PLATFORM_ID } from '@angular/core';
import { httpInterceptorProvides } from './http-interceptors';


export const API_CONFIG = new InjectionToken('ApiConfigToken');
export const WINDOW = new InjectionToken('WindowToken');


@NgModule({
  declarations: [],
  imports: [],
  providers: [
    {
      provide: API_CONFIG,
      useValue: 'http://localhost:3000/'
    },
    {
      provide: WINDOW,
      useFactory(platformId: Object): Window | Object {
        return isPlatformBrowser(platformId) ? window : {};
      },
      deps: [PLATFORM_ID]
    },
    httpInterceptorProvides
  ]
})
export class ServicesModule { }
相关推荐
极速蜗牛25 分钟前
告别部署焦虑!PinMe:前端开发者的极简部署神器
前端·javascript
uhakadotcom1 小时前
Python Protobuf 全面教程:常用 API 串联与实战指南
前端·面试·github
by__csdn1 小时前
微前端架构:从理论到实践的全面解析
前端·javascript·vue.js·架构·typescript·vue·ecmascript
漫长的~以后1 小时前
Edge TPU LiteRT V2拆解:1GB内存设备也能流畅跑AI的底层逻辑
前端·人工智能·edge
小福气_2 小时前
自定义组件 vue3+elementPlus
前端·javascript·vue.js
piaoroumi2 小时前
UVC调试
linux·运维·前端
前端不太难2 小时前
RN 调试效率低,一点小改动就需要重新构建?解决手册(实战 / 脚本 / Demo)
前端·react native·重构
是谁眉眼2 小时前
vue环境变量
前端·javascript·vue.js
3秒一个大2 小时前
JSX 基本语法与 React 组件化思想
前端·react.js
鹏北海-RemHusband2 小时前
Vue 组件解耦实践:用回调函数模式替代枚举类型传递
前端·javascript·vue.js