在 Node 框架 NestJS-6.3.1 中面对 CORS
Posted
技术标签:
【中文标题】在 Node 框架 NestJS-6.3.1 中面对 CORS【英文标题】:Facing CORS In Node framework NestJS-6.3.1 【发布时间】:2019-11-03 06:23:02 【问题描述】:我正在使用nestJs => 6.3.1 框架开发一个Node 基础项目。我已启用所有 cors 仍然面临以下错误
从源“http://localhost:4200”访问“localhost:3000”处的 XMLHttpRequest 已被 CORS 策略阻止:跨源请求仅支持以下协议方案:http、data、chrome、chrome-extension、https。
core.js:7187 ERROR HttpErrorResponse headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "localhost:3000", ok: false, ...
我尝试了以下方法,但仍然遇到同样的问题。
1。 var app = await NestFactory.create(AppModule,cors:true); 等待 app.listen(3000);
var app = await NestFactory.create(AppModule); 常量选项 = 起源: '*', 方法:'GET,HEAD,PUT,PATCH,POST,DELETE', preflightContinue:假, 选项成功状态:204, 凭据:真实, allowedHeaders: '内容类型,接受', ; 控制台日志(应用程序); app.enableCors(选项); 等待 app.listen(3000);
import NestFactory from '@nestjs/core';
import AppModule from './app/app.module';
async function bootstrap()
var app = await NestFactory.create(AppModule);
const options =
origin: '*',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
preflightContinue: false,
optionsSuccessStatus: 204,
credentials: true,
allowedHeaders: 'Content-Type, Accept',
;
console.log(app);
app.enableCors(options);
await app.listen(3000);
bootstrap();
预期输出:服务器应该允许处理跨源请求,但它给出了以下问题或错误。
从源“http://localhost:4200”访问“localhost:3000”处的 XMLHttpRequest 已被 CORS 策略阻止:跨源请求仅支持以下协议方案:http、data、chrome、chrome-extension、https。
【问题讨论】:
【参考方案1】:仔细阅读错误信息:
从源“http://localhost:4200”访问“localhost:3000”处的 XMLHttpRequest 已被 CORS 策略阻止:跨源请求仅支持以下协议方案:http、data、chrome、chrome-extension、https。
您没有通过 HTTP(或 HTTPS)发出请求,因此您的服务器(即 HTTP 服务器)无法响应它,因此您对运行服务器的代码所做的任何事情都不会产生影响。
您需要将请求以localhost:3000
开头的URL的代码更改为http://localhost:3000
【讨论】:
@kamleshgorasiya — 错误消息清楚地表明您的客户端代码正在请求localhost:3000
,而实际上它应该请求 http://localhost:3000
。使用 Postman 可以成功请求数据这一事实仅意味着您在使用该工具时输入了正确的 URL。
非常抱歉,您是对的,我在没有 http 的情况下进行 API 调用以上是关于在 Node 框架 NestJS-6.3.1 中面对 CORS的主要内容,如果未能解决你的问题,请参考以下文章