前端(包含cocosCreator)开发环节调取后端接口时跨域,解决办法之反向代理

/** eslint-disable */
var http = require('http'),httpProxy = require('http-proxy'),HttpProxyRules = require('http-proxy-rules');// Set up proxy rules instance
var port = 9090
var proxyRules = new HttpProxyRules({rules: {'/api/(.*)': 'https://baidu.com/$1', // 测试环境游戏服务},default: 'https://baidu.com', // default target
});// Create reverse proxy instance
var proxy = httpProxy.createProxy({ autoRewrite: true, changeOrigin: true });// Create http server that leverages reverse proxy instance
// and proxy rules to proxy requests to different targets
http.createServer(function (req, res) {// a match method is exposed on the proxy rules instance// to test a request to see if it matches against one of the specified rulesvar target = proxyRules.match(req);console.info({ target });if (target) {// 设置跨域头res.setHeader('Access-Control-Allow-Origin', 'http://localhost:7456');res.setHeader('Access-Control-Allow-Credentials', 'true');res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, App-Info, X-Device, Session');// 检查请求是否为预检请求if (req.method === 'OPTIONS') {// 返回 HTTP OK 状态码(200)以满足预检请求的要求res.writeHead(200);res.end();return;}return proxy.web(req, res, {target: target,});}res.writeHead(500, { 'Content-Type': 'text/plain' });res.end('The request url and path did not match any of the listed rules!');}).listen(port);console.info('======proxy on localhost: ' +port + '======');
console.info('===proxy table===');
console.info({rules: {'/api/(.*)': 'https://baidu.com/$1', // 测试环境游戏服务},default: 'https://baidu.com', // default target
});

用后端给的接口前缀来代替代码中的 ::::::     https://baidu.com 
即可监听本地的http://localhost:7456/   中带api关键字的访问,反向代理到后端服务器

原理是:

  1.    前端和后端不在同一个服务器域名下,会造成跨域阻拦。
  2.   后端和后端的访问不管是不是同源环境,是不是一个域名下,都不会有跨域阻拦。
  3.   node.js起一个简单的后端服务,将前端对后端的跨域访问,先通过node服务和本地前端都是本地的同源关系正常访问node服务,node反向代理到跨域的后端服务上成服务器之间的访问。

     解决办法常用的就是如上,还可以找后端将服务器改为不阻止跨域,后端没安全感,一般不干。
 

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

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

相关文章

自学VBA 设置单元格文字格式 笔记

一.设定对应单元格对应需要显示的格式 Cells(1, 1).Font.Size 18 字体大小 Cells(1, 2).Font.Color RGB(255, 0, 0) 字体颜色 Cells(1, 3).Font.Name "黑体" 字体类型 Cells(1, 4).Font.Italic True 字体斜体 Cells(1, 5).Font.FontStyle "BOLD"…

ubuntu下gcc编译器的安装

.gcc编译器的安装 一般linux下是覆盖含有的,如果没有执行更新命令 sudo apt update gcc安装成功,可以检查一下版本 可以看出我的gcc是9.4.0版本的

验证torch.nn.Conv2d

import os import cv2 import torch import numpy as np import random import cv2 as cv from matplotlib import pyplot as pltdef f_VerifyConv2D():"""验证torch.nn.Conv2d, 并将输入数据及权重保存到txt文件中"""x torch.randn…

SpringBoot环境隔离Profiles

前言 通常我们开发不可能只有一个生产环境,还会有其它的开发,测试,预发布环境等等。为了更好的管理每个环境的配置项,springboot也提供了对应的环境隔离的方法。 直接上干货 知识点 激活环境方法 1,在application…

专用设备制造业供应商收发文件,有什么专业而轻便的方式吗?

专用设备制造业的特点包括:门类广、跨度大、科技含量高。它主要生产的是国民经济各部门(包括采掘、化工、冶炼、能源、医疗卫生、环保等)所急需的重大成套设备,例如矿产资源井采及露天开采设备、大型火电、水电、核电成套设备、石…

教育行业文本短信VS视频短信VS语音短信哪个好?

在教育行业中,文本短信、视频短信和语音短信各有其优势,选择哪种方式更好取决于具体的应用场景和目标。 文本短信的优势在于: 1.简洁明了:能够快速、直接地传递信息,对于需要快速通知或提醒的场景非常适用。 …

通过内网穿透免费部署我们的springboot+vue项目 实现跟服务器一样的效果

前文讲到通过内网穿透能够实现远程访问个人电脑的静态资源。本文将讲解通过内网穿透实现远程访问本地的项目,实现跟部署到服务器一样的效果:前文链接:通过内网穿透实现远程访问个人电脑资源详细过程(免费)(…

深度学习之卷积神经网络理论基础

深度学习之卷积神经网络理论基础 卷积层的操作(Convolutional layer) 在提出卷积层的概念之前首先引入图像识别的特点 图像识别的特点 特征具有局部性:老虎重要特征“王字”仅出现在头部区域特征可能出现在任何位置下采样图像&#xff0c…

Python 小抄

Python 备忘单 目录 1.语法和空格 2.注释 3.数字和运算 4.字符串处理 5.列表、元组和字典 6.JSON 7.循环 8.文件处理 9.函数 10.处理日期时间 11.NumPy 12.Pandas 要运行单元格,请按 ShiftEnter 或单击页面顶部的 Run(运行)。 1.语法和空格…

三种方法进行跨服务器文件传输

今天需要在一个centOS服务器上编译一个工具, 我的本地主机是ubuntu, 但是由于服务器是合规环境, 没有文件传输的接口, 也不能访问github等外网, 所以很多依赖只能下载到ubuntu然后在想办法搞到服务器上. 这种场景有三种简单有用的办法, 整理一下. 方法一: 把主机配置成http ser…

6---Linux下版本控制器Git的知识点

一、Linux之父与Git的故事: Linux之父叫做“Linus Torvalds”,我们简称为雷纳斯。Linux是开源项目,所以在Linux的早期开发中,许多世界各地的能力各异的程序员都参与到Linux的项目开发中。那时,雷纳斯每天都会收到许许…

用ntpdate同步时间出现问题

1. 使用ntpdate同步 [rootnode ~]# ntpdate ntp.aliyun.com4 Aug 00:07:17 ntpdate[20924]: adjust time server 203.107.6.88 offset -0.001543 sec2. 查看时间 [rootnode ~]# date Thu Aug 4 00:07:46 CST 20223. 如果时间对不上 报错信息 cna02:~ # ntpdate ntp1.aliyu…

mysql社区版最多支持多个连接并发

MySQL社区版对于并发连接数的支持并没有一个固定的上限,它实际上取决于多个因素,包括服务器的硬件配置、MySQL的配置参数以及应用程序的设计等。 硬件配置:服务器的CPU、内存和磁盘I/O等硬件资源会直接影响MySQL可以处理的并发连接数。例如&a…

VMware Fusion 13.5.2 for Mac 发布,产品订阅模式首个重大变更

VMware Fusion 13.5.2 for Mac 发布,产品订阅模式首个重大变更 适用于基于 Intel 处理器和搭载 Apple 芯片的 Mac 的桌面虚拟化软件 请访问原文链接:https://sysin.org/blog/vmware-fusion-13/,查看最新版。原创作品,转载请保留…

vue props接收组件数据(类型配置)

"props"接收的常见传参类型有以下几种:String:字符串类型,Number:数字类型,Boolean:布尔类型,Array:数组类型,Object:对象类型,Date&am…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《集装箱海港级联物流-能源耦合系统协同优化方法 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

FPGA - GTX收发器-K码 以及 IBERT IP核使用

一,前言 在FPGA - Xilinx系列高速收发器---GTX中详细介绍了GTX的基础知识,以及IP核的调用,下面将补充一下GTX在使用中的高速串行数据流在接收和发送时的控制与对齐(K码),以及高速接口GTX,如果G…

Springboot开发 -- Postman 调试 session 验证 接口

当我们在开发Spring Boot应用时,经常会遇到带有Session验证的接口,这些接口需要用户先登录并获取到Session ID(或称为cookie中的JSESSIONID),然后在后续的请求中携带这个Session ID来保持会话状态。下面我将以一个实际…

力扣72-编辑距离

题目链接 记忆化搜索: 解题关键:每次仅考虑两字符串word1、word2分别从0 - i修改成0-j下标的完全匹配(下标表示) 临界条件:当 i 或 j 小于0时,表示该字符串为空,编辑距离确定为 y1 或 x1 int dp[501][501…

Hello, GPT-4o!

2024年5月13日,OpenAI 在官网正式发布了最新的旗舰模型 GPT-4o 它是一个 多模态模型,可以实时推理音频、视频和文本。 * 发布会完整版视频回顾:https://www.youtube.com/watch?vDQacCB9tDaw GPT-4o(“o”代表“omni”&#xff0c…