nest.js 第四章 关于跨域问题处理

跨源资源共享(CORS)是一种允许从另一个域请求资源的机制。在底层,Nest 使用了Express的cors 包,它提供了一系列选项,您可以根据自己的要求进行自定义。

为了启用 CORS,必须调用 enableCors() 方法。

const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3000);

enableCors()方法需要一个可选的配置对象参数。这个对象的可用属性在官方 CORS 文档中有所描述。另一种方法是传递一个回调函数,来让你根据请求异步地定义配置对象。

或者通过 create() 方法的选项对象启用CORS。将 cors属性设置为true,以使用默认设置启用CORS。又或者,传递一个 CORS 配置对象 或 回调函数 作为 cors 属性的值来自定义其行为。

const app = await NestFactory.create(AppModule, { cors: true });
await app.listen(3000);

 又或者

main.ts添加  

app.enableCors(corsOptionsDelegate);

import { Request } from 'express';

//设置允许访问的域名

const allowlist = ['http://localhost:8080'];

const corsOptionsDelegate = (req: Request, callback) => {

    let corsOptions;

    console.log("req.header('Origin')",req.header('Origin'))

    if (allowlist.indexOf(req.header('Origin')) !== -1) {

        console.log("req.header('Origin')",req.header('Origin'))

  //如果你不需要 Cookie 可以设置为 *

  // credentials 与前端的axios 的withCredentials(XMLHttpRequest.withCredentials)

   // 同时 origin必须设置为访问域 才能正常访问,主要是为了 凭证是 Cookie ,授权标头或 TLS 客户端证书

        corsOptions = { origin: req.header('Origin'),credentials : true }; 

    } else {

        corsOptions = { origin: false }; // disable CORS for this request

    }

    callback(null, corsOptions); // callback expects two parameters: error and options

}

export default corsOptionsDelegate

两者不可以同时混为使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼程序员

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值