通过代理服务器的方式解决跨域问题

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes

觉得有帮助的同学,可以点心心支持一下哈

这里以本地访问https://heimahr.itheima.net/api/sys/permission接口为列子

Node.js 代理服务器 (server.js)

本次考虑使用JSONP或CORS代理来解决这个问题,在Node.js代理服务器中,添加一个处理JSONP请求的中间件。可以使用cors中间件来简化CORS处理。首先,安装cors模块:

npm install cors --save

在server.js中引入并使用cors中间件,请注意,JSONP只适用于GET请求,并且有其自身的安全风险。因此,如果目标服务器支持CORS,最好与服务器维护者合作,确保正确设置CORS策略。

通过添加cors()中间件,你的代理服务器将自动处理CORS请求,并在请求中包含正确的Access-Control-Allow-Origin头。这样,你的前端应用应该能够成功访问目标接口。

const express = require('express')
const { createProxyMiddleware } = require('http-proxy-middleware')
const cors = require('cors')const app = express()// 启用CORS中间件
app.use(cors())// 创建代理中间件
const proxy = createProxyMiddleware({target: 'https://heimahr.itheima.net',changeOrigin: true,pathRewrite: {'^/api/sys/permission': '/api/sys/permission'}
})// 使用代理中间件处理请求
app.use('/api/sys/permission', proxy)// 启动服务器
const port = 3000
app.listen(port, () => {console.log(`Proxy server is running on port ${port}`)
})

前端请求 (index.html)

确保你已经安装了jQuery库。以下是一个简单的HTML页面,使用jQuery发送GET请求到代理服务器:

<!DOCTYPE html>
<html><head><title>Proxy Request Example</title><script src="./js/jquery.js"></script></head><body><h1>Proxy Request Example</h1><button id="send-request">Send Request</button><pre id="response-output"></pre><script>$(document).ready(function () {$('#send-request').click(function () {$.ajax({url: 'http://localhost:3000/api/sys/permission', // 代理服务器的URLmethod: 'GET',headers: {Authorization:'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsImlhdCI6MTcwNTg1NDU1MSwiZXhwIjoxNzA1ODc2MTUxfQ.z8w-xqklhq86IPp3yPapyHVtckTD2SDpnfD-YKiieb8'},success: function (response) {$('#response-output').text(JSON.stringify(response, null, 2))},error: function (error) {$('#response-output').text('Error: ' + error.statusText)}})})})</script></body>
</html>

成功截图

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

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

相关文章

助力医疗数字化转型,贝锐x医百科技案例解析

在医疗数字化这个历史进程的大浪潮中&#xff0c;医药企业扮演着重要的角色&#xff0c;其重要程度恐怕仅次于医疗机构本身。同时&#xff0c;数字化转型对于医药企业的赋能作用也是十分明显的&#xff0c;尤其在营销端&#xff0c;一系列的数字化管理、数字化推广方案已经成为…

安装IIS及搭建asp.net程序遇到的问题

一、安装IIS 在服务器管理中选择IIS&#xff0c;右键选择添加角色和功能 在服务器角色中&#xff0c;应用程序开发中要选择ASP.NET3.5、ASP.NET4.6功能。 单击下一步执行安装即可。 二、常见问题 问题1. HTTP 错误404.17 - Not Found 解决方法&#xff1a; 出现以上问题没有…

幻兽帕鲁Docker服务端搭建

幻兽帕鲁Docker服务端搭建 各种命令 https://bbs.saraba1st.com/2b/thread-2168983-1-1.html 存档恢复 这里直接看这个工程的readme就行&#xff1a;https://github.com/yoko-murasame/palworld-host-save-fix 其他参考&#xff1a;https://forum.gamer.com.tw/C.php?bsn7…

SpringBoot使用Swagger2生成接口文档

一、导入依赖 <!-- knife4j--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.7</version></dependency> 二、配置类 通过一下配置&am…

USRP相关报错解决办法

文章目录 前言一、本地环境二、相关报错信息二、解决办法1、更换电脑操作系统2、升级最新版固件 前言 在进行 USRP 开发时遇到了一些报错&#xff0c;这里做个记录解决问题的方法。 一、本地环境 电脑操作系统&#xff1a;Windows11MATLAB 版本&#xff1a;MATLAB 2021aUSRP …

rabbitmq基础-java-2、work模型

1、简介 工作队列模式&#xff08;Work Queue Mode&#xff09;&#xff1a;在这个模型中&#xff0c;生产者同样将消息发送到队列&#xff0c;但多个消费者可以从队列中获取消息并发处理。这意味着不同的消费者可以独立地处理各自的任务&#xff0c;从而提高效率。 2、消息发送…

基于springboot+vue的小徐影城管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

C语言进阶——数据结构之链表

前言 hello&#xff0c;大家好呀&#xff0c;我是Humble 在之前的两篇博客&#xff0c;我们学完了数据结构中的顺序表&#xff0c;还对它进行了一个应用&#xff0c;做了一个通讯录的小项目 那今天我们再来学习一个新的数据结构——链表 引入 我们来回忆一下顺序表 对于顺…

小程序技术实践:快速开发适配鸿蒙的App

今年&#xff0c;在中国&#xff0c;被各大媒体和开发者称为“鸿蒙元年”。 在2023年底就有业内人士透露&#xff0c;华为明年将推出不兼容安卓的鸿蒙版本&#xff0c;未来IOS、鸿蒙、安卓将成为三个各自独立的系统。 果不其然&#xff0c;执行力超强的华为&#xff0c;与202…

Elasticsearch8安装Fleet Server

由于业务需求&#xff0c;我们需要在7个不同的业务平台安装ES-Agent以收取其数据。我们的策略是在每个平台上安装一个Fleet Server&#xff0c;用于管理各平台的ES-Agent。 Configure SSL/TLS for self-managed Fleet Servers | Fleet and Elastic Agent Guide [8.12] | Elast…

1、【vue篇】vue框架快速上手

注意事项&#xff1a; methods必须要加s 导入vue&#xff1a;<script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>导入Axios:<script src"https://unpkg.com/axios/dist/axios.min.js"></script> 简单Vue程序…

轻松上手:通过阿里云PAI QuickStart微调部署Qwen-72B-Chat模型

作者&#xff1a;熊兮、求伯、一耘 引言 通义千问-72B&#xff08;Qwen-72B&#xff09;是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛&#xff0c;包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上…

05-使用结构体构建相关数据

上一篇&#xff1a; 04-了解所有权 结构体&#xff08;struct&#xff09;是一种自定义数据类型&#xff0c;可以将多个相关值打包命名&#xff0c;组成一个有意义的组。如果你熟悉面向对象的语言&#xff0c;那么结构体就像是对象的数据属性。在本章中&#xff0c;我们将对元组…

C# Wpf MVVM 框架下的线程并发与异步编程

在软件开发中&#xff0c;我们经常需要执行耗时的操作&#xff0c;如文件读写、网络请求等。这些操作可能会阻塞主线程&#xff0c;导致用户界面无响应。为了避免这种情况&#xff0c;我们可以使用线程并发和异步编程技术。本文将详细解释这两种技术的区别以及它们各自的优点&a…

新年钜惠|泰迪智能科技免费协助企业完成3个行业AI案例建模

在新年到来之际&#xff0c;为了感谢各企业一直以来对泰迪智能科技的支持&#xff0c;日前我们推出了新年钜惠活动即&#xff1a;免费协助企业完成3个行业AI案例建模。我们希望通过这样的活动&#xff0c;可以帮助更多的企业迈出AI应用的第一步&#xff0c;同时我们也希望能够为…

Spring Boot整合webservice

Spring Boot整合webservice 前言1.整合依赖2.建立暴露接口2.实现类 3.发布服务4.查看打完收工&#xff01; 前言 工作中遇到的问题&#xff0c;由于下游系统属于第三方系统&#xff0c;使用的是soap webservice&#xff0c;同时也在开发&#xff0c;虽然也发布了一套webservic…

R语言【taxa】——roots(),stems(),subtaxa(),supertaxa():获取根节点、茎节点、子类群和父类群

roots(x, subset NULL) 在 taxonomy 中查找根节点类群的索引值。 > x <- taxonomy(c(Carnivora, Felidae, Panthera, Panthera leo,Panthera tigris, Ursidae, Ursus, Ursus arctos),supertaxa c(NA, 1, 2, 3, 3, 1, 6, 7))> roots(x) [1] 1> roots(x, subset …

如何在阿里云提交使用工单

有时候大家在使用阿里云的服务时候&#xff0c;可能会遇到一些问题&#xff0c;或许是云服务器如何升级了如何改套餐啊之类的&#xff0c;亦或者是域名ICP备案啊看进度啊等等问题&#xff0c;遇到问题怎么办不要慌。我们可以使用阿里云的工单系统&#xff0c;阿里云工单系统可以…

Linux命令大全

文章目录 目录操作与文件管理系统信息与管理软件包管理和系统维护压缩与解压缩网络与通信辅助工具与信息获取文本处理与搜索时间与日期操作网络连接与通信&#xff08;补充&#xff09;链接管理磁盘与存储管理环境变量与路径设置用户和组管理查看系统信息 当然&#xff0c;以下…

Python使用pip命令安装外部库-项目内安装外部库-全局安装外部库

一、前言 在进行Python项目开发时需要安装一些外部库来扩展项目功能&#xff0c;因此需要了解pip命令的详细使用。 二、基本语法 1.安装库 pip install 包名 2.安装特定版本 pip install 包名版本号 3.升级库 pip install --upgrade 包名 4.卸载库 pip uninstall 包名 5.查看已…