node.js express cors解决跨域

目录

什么是跨域

示例

postman请求

前端请求

cors中间件解决跨域

流程

配置cors参数


什么是跨域

跨域(Cross-Origin)是指在 Web 开发中,当一个网页的源(Origin)与另一个网页的源不同时,就发生了跨域。同源策略(Same-Origin Policy)是浏览器的一项安全策略,限制了一个源下的文档或脚本如何能与另一个源下的资源进行交互。

同源是指两个 URL 具有相同的协议(http/https)、主机(domain)和端口(port)。如果这两个URL的这三个部分中任何一个不同,就被认为是不同源即跨域。

示例

开启一个node服务,服务地址为http://127.0.0.1:3000

postman请求

postman对服务发起post登录请求

请求成功。postman不受跨域影响,原因主要是因为postman是一个独立的桌面应用程序,而不是运行在浏览器中的 Web 应用。

前端请求

开启一个前端项目服务,比如vue

发起登录请求

<script setup>import axios from 'axios'const authLogin = async () => {try {const { data } = await axios.post('http://127.0.0.1:3000/api/v1/users/login', {"email": "adasdasasda1@qq.com","password": "pass1234"})} catch (error) {throw new Error(error)}}
</script><template><main><button @click="authLogin">sign</button></main>
</template>

浏览器跨域报错

cors中间件解决跨域

流程

1、安装cors依赖

npm i cors

2、引入依赖

const cors = require('cors');

3、注册中间件

全局注册cors中间件

app.use(cors());

 或为某个路由注册cors中间件

router.post('/path', cors(), controller);

vue服务进行post请求

请求成功,看到响应头Access-Control-Allow-Origin为*, 为cors的默认设置

配置cors参数

const corsOptions = {origin: 'http://192.168.110.61:5173',//...
};app.use(cors(corsOptions));

origin: 允许访问资源的特定源

通过查阅github文档查看其他配置

GitHub - expressjs/cors: Node.js CORS middleware

用cors中间件配置同以下

app.all("*", (req, res, next) => {//设置允许跨域的域名,*代表允许任意域名跨域res.header("Access-Control-Allow-Origin", "http://192.168.110.61:5173");
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录 | Google gtest安装

1、下载源码 git clone https://github.com/google/googletest2、源码编译 cd googletestcmake CMaakeLists.txtmake -j32编译成功后会在 googletest/lib 下生成 libgtest.a、libgtest_main.a、libgmock.a、libgmock_main.a 四个静态库。 把生成的静态库和头加入到系统环境…

计算机网络——期末考试复习资料

什么是计算机网络 将地理位置不同的具有独立功能的多台计算机及其外部设备通过通信线路和通信设备连接起来&#xff1b;实现资源共享和数据传递的计算机的系统。 三种交换方式 报文交换&#xff1a;路由器转发报文&#xff1b; 电路交换&#xff1a;建立一对一电路 分组交换&a…

JavaScript-异常与this处理与性能优化

1. 深浅拷贝 const obj {uname: nidie,age: 18}// o对象直接复制obj&#xff0c;直接赋值将obj的地址也给了oconst o obj// 正常打印18console.log(o);// 对o改动&#xff0c;打印obj&#xff0c;obj也被改动了o.age 20console.log(o);console.log(obj);1.1 浅拷贝 拷贝对象…

深入理解RabbitMQ消息中间件

一、引语 本文将介绍RabbitMQ消息中间件的基本概念、工作原理以及在实际应用中的使用场景。通过阅读本文&#xff0c;您将了解到RabbitMQ如何帮助企业实现高效的异步通信和解耦。 二、消息中间件 1.简介 信息中间件是一种应用于分布式系统的基础软件&#xff0c;它位于各类…

Leetcode 40 组合总和 II

题意理解&#xff1a; 每个数字在每个组合中只能使用 一次 数字可以重复——>难点&#xff08;如何去重&#xff09; 每个组合和target 求组合&#xff0c;对合限制&#xff0c;考虑回溯的方法。——将其抽象为树结构。 树的宽度——分支大小 树的深度——最…

.NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)

WebAppDbTest 项目准备 项目准备1、.net cli 创建项目2、nuget 包引用和项目结构2.1、项目添加相关 nuget 包2.2、WebAppDbTest 项目结构 3、项目代码说明3.1、CSharp/C# 类文件说明3.2、json 配置文件说明 4、项目运行预览 数据库 .db 文件准备1、创建 SQLite 数据库1.1、在 W…

vue前端访问Django channels WebSocket失败

现象 前端报错&#xff1a;SSH.vue:51 WebSocket connection to ‘ws://127.0.0.1:8000/server/terminal/120.59.88.26/22/1/’ failed: 后端报错&#xff1a;Not Found: /server/terminal/120.79.83.26/22/1/ 原因 django的版本与channels的版本不匹配&#xff08;django…

IDEA多模块开发-加载模块管理-加快项目加载速度

加快项目加载速度 当一个项目模块数量多起来之后&#xff0c;若所有的模块都同时使用git&#xff0c;maven管控&#xff0c;那么每次Idea打开项目/git切换分支加载时间将会极久 配置git模块 file-setting- Version-Control 管理git控制模块&#xff0c; 对于当前不需要git管…

【Maven教程】(十二):版本管理 ——版本号定义约定及相关概念,自动化版本发布与创建分支,GPG签名 ~

Maven 版本管理 1️⃣ 版本管理的概念2️⃣ Maven 的版本号定义约定3️⃣ 主干、标签与分支4️⃣ 自动化版本发布5️⃣ 自动化创建分支6️⃣ GPG签名6.1 GPG 及其基本使用6.2 Maven GPG Plugin &#x1f33e; 总结 一个健康的项目通常有一个长期、合理的版本演变过程。例如JUn…

分布式之raft一致性算法

1.CAP定理 在一个分布式系统中&#xff0c;CAP三者不可兼得&#xff0c;最多只有两者可以满足&#xff0c;正所谓鱼和熊掌不可兼得 一致性 Consistency&#xff1a;所有的节点在同一时间的数据一致可用性 Availability&#xff1a;服务在正常响应时间内可用分区容错性 Partit…

全新wifi大师独立版4.0.5分销小程序/专业独立版/带流量主+搭建教程

源码简介&#xff1a; 全新wifi大师独立版4.0.5分销小程序&#xff0c;它是专业独立版&#xff0c;而且是带流量主&#xff0c;有搭建教程。 WiFi大师是一款专为商家店内用户设计的WiFi连接小程序。它的出现有效解决了商家在为客户提供WiFi服务的过程中遇到的各种问题&#x…

大数据篇|Hadoop发展史及介绍

文章目录 一、Hadoop介绍1.1、Hadoop是什么 二、Hadoop发展史2.1、创始人2.2、Hadoop发展历史/起源2.3、Hadoop三大发行版本2.3.1、Apache Hadoop2.3.2、Cloudera Hadoop2.3.3、Hortonworks Hadoop 三、Hadoop组成3.1、Hadoop组成3.2、模块3.3、Hadoop特性优点 一、Hadoop介绍 …