当前位置: 首页 > news >正文

vue2-代理打包问题;CORS针对AJAX 请求,而不适用于资源请求

打包后请求被转发出现问题(如返回 405 Method Not Allowed),通常是由以下原因导致的:


1. 代理配置未生效

原因分析

在开发环境中,Vue CLI 的 devServer.proxy 仅在本地开发服务器(npm run serve)时生效。在生产环境(打包后)中,代理配置是无效的。请求会直接发送到打包后的服务器(localhost:8080)。

解决方案

需要在生产环境的服务器(如 Nginx 或后端服务)中配置请求转发规则。

Nginx 配置示例

假设生产环境使用 Nginx 部署前端代码,转发 /exportFile 到目标服务:

server {listen 8080;server_name localhost;location / {root /path/to/your/dist; # Vue 打包后的文件路径index index.html;try_files $uri /index.html; # 处理 SPA 的路由}# 转发 /exportFile 的请求到后端服务location /exportFile {proxy_pass http://192.168.11.111:8888; # 后端服务地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
验证
  1. 确保 Nginx 的配置已重新加载并生效:
    nginx -s reload
    
  2. 请求 http://localhost:8080/exportFile/delete?id=21&serviceName=... 应正确转发到 http://192.168.11.111:8888/exportFile/delete?id=21&serviceName=...

2. 请求方法不被后端服务支持

原因分析

405 Method Not Allowed 表明后端服务(如 http://192.168.11.111:8888)未正确支持 DELETE 方法。可能是:

  • 后端接口未配置支持 DELETE 方法。
  • 路径 /exportFile/delete 不存在或未绑定到 DELETE 方法。
  • 跨域配置(CORS)限制导致请求被拒绝。
解决方案
  1. 确认后端服务是否支持 DELETE 方法

    • 检查后端代码或使用工具(如 Postman)直接请求后端地址,测试 http://192.168.11.111:8888/exportFile/delete 是否返回正确响应。
    • 如果后端未实现 DELETE 方法,需更新后端逻辑支持该方法。
  2. 检查跨域配置(CORS)

    • 如果后端服务器开启了跨域检查,确保允许 DELETE 请求和相关的请求头。例如,Spring Boot 的配置可以这样修改:
      @Configuration
      public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedOrigins("*").allowedHeaders("*");}
      }
      

3. 请求未正确转发到目标服务

原因分析

代理或 Nginx 转发路径不正确,导致请求未能到达后端服务。

解决方案
  1. 确认代理路径是否正确

    • 检查 /exportFile/delete 的转发路径是否匹配后端的实际接口路径。
    • 确保 /exportFile 前缀被正确处理(如未删除多余路径)。
  2. 调试转发逻辑

    • 使用浏览器开发者工具或日志工具查看转发后的请求地址。
    • 如果 Nginx 配置了转发,在 proxy_pass 中添加日志输出或使用工具(如 Wireshark)分析实际的请求路径。

4. 打包后的静态文件干扰了转发

原因分析

打包后的 Vue 项目可能生成了与 /exportFile 相同的静态文件或路径(如 /exportFile 被识别为一个静态文件目录),导致转发失败。

解决方案

在生产环境中,优先确保 /exportFile 的路径被转发,而不是解析为静态文件。

Nginx 配置示例
server {listen 8080;location /exportFile {proxy_pass http://192.168.11.111:8888;}location / {root /path/to/your/dist;index index.html;try_files $uri /index.html;}
}

5. 检查 URL 编码的问题

原因分析

你的请求 URL 中 serviceName 的参数值经过了 URL 编码(如 %2B, %3D 等),这可能导致后端解析失败。

解决方案
  1. 检查是否需要手动对 URL 参数进行解码。
  2. 如果后端未正确解析 URL 编码参数,调整后端逻辑。

例如,在 Spring Boot 中可以使用 @RequestParam 自动解码:

@RequestMapping(value = "/exportFile/delete", method = RequestMethod.DELETE)
public ResponseEntity<?> deleteFile(@RequestParam String id, @RequestParam String serviceName) {System.out.println("Decoded serviceName: " + serviceName);// 业务逻辑return ResponseEntity.ok("Success");
}

跨域限制(CORS,Cross-Origin Resource Sharing)主要针对跨域的 AJAX 请求,而不适用于资源请求

资源下载通常不会触发跨域限制的原因可以归结为以下几点:


1. 浏览器对跨域请求的限制规则

跨域限制(CORS,Cross-Origin Resource Sharing)主要针对跨域的 AJAX 请求,而不适用于资源请求。这是因为:

  • CORS 的目标:保护用户的数据安全,防止恶意网站通过脚本盗取用户敏感数据。
  • 资源下载场景:通常是文件下载、图片、视频等,这些请求不涉及浏览器中的 JavaScript 操作,浏览器默认认为其风险较低。

因此:

  • AJAX 请求:如果跨域资源的服务器未明确声明允许跨域访问,则会被浏览器阻止。
  • 文件下载:浏览器不会对直接的文件下载请求(例如 <a href="..."> 或直接访问资源 URL)进行跨域限制。

2. 资源下载请求不暴露敏感信息

资源下载通常使用 GET 请求,不包含用户的认证信息(例如 CookiesAuthorization)。即使是跨域请求,资源下载不会涉及用户的隐私或数据泄漏风险。

  • 如果请求触发了浏览器的下载行为(如点击下载链接),浏览器会直接处理响应,不涉及 JavaScript 操作。
  • 因此,浏览器无需验证是否启用了跨域访问权限。

3. 下载资源的 MIME 类型处理

下载资源的响应通常带有 Content-Disposition: attachment 头部,这会触发浏览器的文件下载行为,而不是将响应暴露给页面脚本。

例如:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="example.txt"

这种情况下:

  • 浏览器不会将响应暴露给 JavaScript。
  • 即使是跨域的资源下载,也不会因为 CORS 限制而阻止。

4. 示例对比:文件下载与 AJAX 请求

AJAX 请求(受 CORS 限制)

通过 JavaScript 发起跨域请求时,浏览器会检查目标服务器是否允许跨域。若目标服务器未设置 Access-Control-Allow-Origin,请求会被浏览器拦截。

axios.get('https://example.com/resource') // 如果没有 CORS,浏览器会报错.then(response => console.log(response)).catch(error => console.error('CORS Error:', error));
文件下载(不受 CORS 限制)

直接触发资源下载的行为不受 CORS 限制:

<a href="https://example.com/resource" download>下载文件</a>

即使 example.com 未配置 CORS,文件也能正常下载。


5. 服务器响应的区别

跨域请求和下载请求的区别在于服务端如何响应。

CORS 需要明确授权

CORS 请求需要服务端返回以下 HTTP 头部:

Access-Control-Allow-Origin: https://your-origin.com
Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
文件下载的典型响应

资源下载请求的响应通常像这样:

Content-Type: application/pdf
Content-Disposition: attachment; filename="file.pdf"

即使目标服务器没有设置 Access-Control-Allow-Origin,浏览器也会直接下载文件,因为文件下载不会暴露数据给 JavaScript 环境。


6. 文件下载可能的限制场景

虽然资源下载通常不受跨域限制,但在以下场景中可能会失败:

需要认证的资源
  • 如果资源需要认证(例如基于 CookieAuthorization),而资源服务器不支持跨域请求,则认证可能会失败。
  • 解决方案:确保请求资源时正确传递认证信息,并配置服务器允许跨域访问。
资源被拒绝的 HTTP 状态码
  • 如果资源服务器返回 403 Forbidden404 Not Found,下载会失败。这通常是服务器逻辑的问题,与跨域无关。
浏览器安全策略
  • 某些浏览器可能禁止下载从不可信来源的资源。例如,用户点击的下载链接可能会被标记为风险链接。

7. 需要跨域的资源场景

如果你需要通过跨域方式下载资源,但又需要通过 JavaScript 发起请求(如 fetchaxios),你需要确保目标服务器支持 CORS。

示例后端 CORS 配置(以 Node.js 为例):

const express = require('express');
const cors = require('cors');
const app = express();// 允许跨域请求
app.use(cors());// 提供文件下载
app.get('/download', (req, res) => {res.setHeader('Content-Disposition', 'attachment; filename="example.txt"');res.send('Hello, this is your file!');
});app.listen(3000, () => console.log('Server running on http://localhost:3000'));

前端下载文件:

fetch('http://localhost:3000/download', {method: 'GET'
}).then(response => response.blob()).then(blob => {const url = window.URL.createObjectURL(blob);const a = document.createElement('a');a.href = url;a.download = 'example.txt';document.body.appendChild(a);a.click();a.remove();});

总结

1. 文件下载不受 CORS 限制,因为浏览器直接处理下载行为,不涉及 JavaScript。
2. 如果需要通过 AJAX 获取文件数据并下载,则需要服务器支持 CORS。
3. 如果你的资源下载涉及身份验证,确保后端支持认证并正确配置跨域。

相关文章:

vue2-代理打包问题;CORS针对AJAX 请求,而不适用于资源请求

打包后请求被转发出现问题&#xff08;如返回 405 Method Not Allowed&#xff09;&#xff0c;通常是由以下原因导致的&#xff1a; 1. 代理配置未生效 原因分析 在开发环境中&#xff0c;Vue CLI 的 devServer.proxy 仅在本地开发服务器&#xff08;npm run serve&#xff…...

websocket 服务 pinia 全局配置

websocket 方法类 // stores/webSocketStore.ts import { defineStore } from "pinia";interface WebSocketStoreState {ws: WebSocket | null; // WebSocket 实例callbacks: ((message: string) > void)[]; // 消息回调函数列表connected: boolean; // 连接状态…...

YOLO系列正传(二)YOLOv3论文精解(上)——从FPN到darknet-53

系列文章 YOLO系列基础 YOLO系列基础合集——小白也看得懂的论文精解-CSDN博客 YOLO系列正传 YOLO系列正传系列&#xff08;一&#xff09;类别损失与MSE损失函数、交叉熵损失函数-CSDN博客 背景 随着YOLOv11版本的发布&#xff0c;YOLO算法在视觉检测领域独领风骚&#x…...

可视化建模与UML《部署图实验报告》

一、实验目的&#xff1a; 1、熟悉部署图的基本功能和使用方法。 2、掌握使用建模工具软件绘制部署图的方法 二、实验环境&#xff1a; window11 EA15 三、实验内容&#xff1a; 根据以下的描述&#xff0c;绘制部署图。 网上选课系统在服务器端使用了两台主机&#xff0c;一…...

详解RabbitMQ在Ubuntu上的安装

​​​​​​​ 目录 Ubuntu 环境安装 安装Erlang 查看Erlang版本 退出命令 ​编辑安装RabbitMQ 确认安装结果 安装RabbitMQ管理界面 启动服务 查看服务状态 通过IP:port访问 添加管理员用户 给用户添加权限 再次访问 Ubuntu 环境安装 安装Erlang RabbitMq需要…...

SQL 快速参考

SQL 快速参考 引言 SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;的标准编程语言。它被广泛用于数据查询、数据更新、数据库维护以及访问控制。本快速参考指南旨在提供SQL的基本概念和常用命令的概览…...

数据结构--树和二叉树

树和二叉树的定义 树的定义 树是一种非线性的数据结构&#xff0c;它模拟了具有层次关系的数据的集合。在树结构中&#xff0c;存在以下基本概念&#xff1a; 节点&#xff08;Node&#xff09;&#xff1a;树的每个元素被称为节点。根节点&#xff08;Root Node&#xff09…...

R语言的数据结构-向量

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言编程_夏天又到了的博客-CSDN博客 在R语言中&#xff0c;数据结构是非常关键的部分&#xff0c;它提…...

MetaGPT源码 (ContextMixin 类)

目录 理解 ContextMixin什么是 ContextMixin&#xff1f;主要组件实现细节 测试 ContextMixin示例&#xff1a;ModelX1. 配置优先级2. 多继承3. 多继承重写4. 配置优先级 在本文中&#xff0c;我们将探索 ContextMixin 类&#xff0c;它在多重继承场景中的集成及其在 Python 配…...

linux中top命令详解

top 命令是 Linux 系统中常用的实时系统监控工具&#xff0c;它可以显示系统的实时进程和资源占用情况。以下是 top 命令的一些基本用法和参数详解&#xff1a; 基本用法 • top&#xff1a;运行 top 命令&#xff0c;显示系统实时监控信息。 • top -h&#xff1a;显示帮助信…...

Scrapy与MongoDB

Scrapy可以在非常短的时间里获取大量的数据。这些数据无论是直接保存为纯文本文件还是CSV文件&#xff0c;都是不可取的。爬取一个小时就可以让这些文件大到无法打开。这个时候&#xff0c;就需要使用数据库来保存数据了。 MongoDB由于其出色的性能&#xff0c;已经成为爬虫的首…...

【Linux-ubuntu通过USB传输程序点亮LED灯】

Linux-ubuntu通过USB传输程序点亮LED灯 一,初始化GPIO配置1.使能时钟2.其他寄存器配置 二&#xff0c;程序编译三&#xff0c;USB传输程序 一,初始化GPIO配置 1.使能时钟 使能就是一个控制信号&#xff0c;用于决定时钟信号是否能够有效的传递或者被使用&#xff0c;就像一个…...

onlyoffice 容器配置修改后制作镜像导出以及上传到 dockerhub

1.将容器制作成新的镜像 docker commit -p -a "xxx" -m "zh-cn-20-100" onlyoffice ooffice:7.1.1.23docker commit: 这是 Docker 中用于创建新镜像的命令。 -p: 这个选项用于在提交之前暂停容器的运行。这可以确保数据的完整性&#xff0c;因为容器在提交…...

开发者如何使用GCC提升开发效率 Windows下Cmake + NDK 交叉编译 Libyuv

最近在导入其他项目的libyuv库&#xff0c;编译时发现如下问题&#xff0c;刚好想做一期libyuv编译与安装到AS中的文章&#xff0c;故记录集成的全过程 报错如下 error: no member named ABGRToNV21 in namespace libyuv; did you mean ARGBToNV21? error: no member named …...

前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码

技术栈选用 Vue3 Vite5 Pinia Vant4 Sass 源码地址&#xff1a; git clone https://gitee.com/gaiya001/h5-APP.git1. 1.vite.config.js文件配置 ** import { defineConfig } from vite // 导入 Vite 的配置函数 import vue from vitejs/plugin-vue // 导入 Vue 插件 i…...

华为HCIP H12-821考试中心原题题库更新完成 展示如下

全题库506题&#xff0c;后期有更新会及时更新维护&#xff0c;确保答案正确率和原题覆盖率。 ​​​​​​​ 附上最新通过成绩单一张 今天新鲜出炉 ​​​​​​​...

SQL Server:只有MDF文件,如何附加数据库

第一步&#xff1a;先新建一个同名数据库&#xff0c;然后停止sql服务&#xff0c;删除新建数据库.ldf文件。 第二步&#xff1a;将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件&#xff0c;并重启sql服务。 第三步&#xff1a;这时数据库DATA目录下只有一个.mdf文件&#xf…...

nginx反向代理(负载均衡)和tomcat介绍

nginx的代理 负载均衡 负载均衡的算法 负载均衡的架构 基于ip的七层代理 upstream模块要写在http模块中 七层代理的调用要写在location模块中 轮询 加权轮询 最小连接数 ip_Hash URL_HASH 基于域名的七层代理 配置主机 给其余客户机配置域名 给所有机器做域名映射 四层代理…...

【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】

目录 前端文件操作与文件上传前端接受后端传输文件指南前端excel、word操作指南 excelword 前端文件操作与文件上传 一、前端文件上传有两种思路&#xff1a; 二进制blob传输&#xff1a;典型案例是formData传输&#xff0c;相当于用formData搭载二进制的blob传给后端base…...

Android IO 性能优化:全面解析与实践

文章目录 前言1、文件系统与 I/O 流程原理1.1 文件系统架构1.2 文件 I/O 流程 2、优化策略与场景适用2.1 异步 I/O2.2 合并文件操作2.3 页缓存优化2.4 内存映射文件 3. 性能监控与验证总结 前言 在现代 Android 应用中&#xff0c;I/O 性能直接影响用户体验。流畅的响应速度和…...

利用Docker分层构建优化镜像大小

合适docker镜像文件大小不仅影响容器启动效率&#xff0c;也影响资源占用效率。本文介绍如何利用分层方式构建docker镜像&#xff0c;采用多种方式避免镜像文件太大而影响性能。 Docker 镜像大小优化的重要性 资源利用效率 较小的镜像文件在存储和传输过程中占用更少的空间和带…...

【代码pycharm】动手学深度学习v2-09 Softmax 回归 + 损失函数 + 图片分类数据集

课程链接 1.读取图像分类数据集 import matplotlib.pyplot as plt import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2l d2l.use_svg_display() #读取数据集 transtransforms.ToTensor() mnist_…...

docker开启远程访问

1、编辑docker.server文件 vi /usr/lib/systemd/system/docker.service 找到 [Service] 节点&#xff0c;修改 ExecStart 属性&#xff0c;增加 -H tcp://0.0.0.0:2375 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2…...

Maven插件打包发布远程Docker镜像

dockerfile-maven-plugin插件的介绍 dockerfile-maven-plugin目前这款插件非常成熟&#xff0c;它集成了Maven和Docker&#xff0c;该插件的官方文档地址如下&#xff1a; 地址&#xff1a;https://github.com/spotify/dockerfile-maven 其他说明&#xff1a; dockerfile是用…...

基于STM32的太阳跟踪系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 太阳位置检测模块伺服驱动控制模块反馈调整模块电源管理模块控制算法 太阳位置估算算法跟踪调整算法代码实现 太阳位置检测与估算伺服电机控制系统反馈与调整系统调试与优化结论与展望 1. 引言 太阳能是一种清洁、可再生的能…...

004-Redis 持久化

Redis 持久化 一、RDB 持久化1.优点&#xff1a;2.缺点&#xff1a;3.实现方式&#xff1a; 二、AOF 持久化1.优点&#xff1a;2.缺点&#xff1a;3.实现方式&#xff1a;4.重写机制5.重写流程&#xff1a; Redis 提供了两种主要的持久化方式&#xff1a;RDB 和 AOF 一、RDB 持…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 1

一、前情提要 Kioptrix Level是免费靶场&#xff0c;可以自己百度下载。 开始前要先将靶机设置和kali同一个网络模式&#xff0c;我这里设置的是NAT。 接下来的靶机用kali进行演示。 二、打靶演示 这个靶机练习&#xff0c;相当于内网渗透。 1. 信息收集 1.1. 主机发现 …...

短视频矩阵系统功能介绍与独立部署流程

一、短视频矩阵系统功能介绍 短视频矩阵系统&#xff0c;作为当前短视频运营的重要工具&#xff0c;凭借其强大的功能&#xff0c;为内容创作者和企业提供了高效、便捷的短视频管理与运营方案。以下是对该系统核心功能的详细介绍&#xff1a; 多平台账号管理&#xff…...

【AI知识】人工智能、机器学习、深度学习的概念与联系

下图来自博客 机器学习和深度学习概念入门 &#xff0c;图中可明显看到人工智能、机器学习、深度学习三个概念的包含关系&#xff0c;下面简单介绍一下这三个概念已经它们之间的联系。 1. 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09; 概念&#x…...

今天你学C++了吗?——C++中的类与对象(日期类的实现)——实践与知识的碰撞❤

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

一个简单带颜色的Map

越简单 越实用。越少设计&#xff0c;越易懂。 需求背景&#xff1a; 创建方法&#xff0c;声明一个hashset&#xff0c; 元素为 {“#DE3200”, “#FA8C00”, “#027B00”, “#27B600”, “#5EB600”} 。 对应的key为 key1 、key2、key3、key4、key5。 封装该方法&#xff0c…...

前端工程化(三)

如何使用 Webpack 优化产出代码&#xff1f; 使用 Webpack 优化产出代码可以通过以下几种方式&#xff1a; 压缩代码&#xff1a;在生产环境中&#xff0c;使用 UglifyJSPlugin 或 TerserPlugin 等插件对代码进行压缩&#xff0c;可以减少代码体积&#xff0c;提高加载速度。…...

SQLAlchemy: Python中的强大数据库工具

SQLAlchemy: Python中的强大数据库工具 SQLAlchemy是一个功能强大的Python库&#xff0c;广泛应用于数据库操作。它提供了一个灵活的数据库抽象层&#xff0c;可以帮助开发者轻松与关系型数据库进行交互。本文将介绍SQLAlchemy的核心组件、常用功能以及它的优势。 1. SQLAlch…...

scala的泛型特质的应用场景

//泛型特质的应用场景 //作比较找出最大值 //定义一个函数&#xff0c;用来求List元素中的最大值参考代码&#xff1a;object Test4 {def getMax[T](list:List[T])(implicit ev:T > Ordered[T]): T {list.reduce((a:T,b:T)> if(a>b) a else b)}def main(args: Array…...

【C++】重载运算与类型转换(七):成员访问运算符

14.7 成员访问运算符 在迭代器类和智能指针类常常用到解引用运算符&#xff08;*&#xff09;和箭头运算符&#xff08;->&#xff09;。以如下形式向 StrBlobPtr 类添加这两种运算符&#xff1a; class StrBlobPtr {public:std::string& operator*() const{ auto p …...

论文结论:GPTs and Hallucination Why do large language models hallucinate

GPTs and Hallucination 当一个主题有普遍共识&#xff0c;并且有大量语言可用于训练模型时&#xff0c;大模型的输出可以反映出该共识观点在没有足够关于主题的语言示例【晦涩/数据有限】&#xff0c;或者主题有争议&#xff0c;或是对主题没有明确共识的情况下&#xff0c;就…...

修改通过 Docker 部署的 WordPress 上传文件的大小

要修改通过 Docker 部署的 WordPress 上传文件的大小&#xff0c;你可以按照以下步骤操作&#xff1a; 进入 Docker 容器&#xff1a;首先&#xff0c;你需要进入 WordPress 容器内部。可以使用如下命令&#xff1a; docker exec -it wordpress /bin/bash其中wordpress是你的 W…...

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列

参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子&#xff0c;但并不完整&#xff0c;根据上述代码&#xff0c;进行修改完善&#xff0c;实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…...

信而泰网络测试仪校准解决方案

一、影响仪表精度的因素 网络测试仪是用于对数据网络及其相关设备性能参数进行测试的仪表&#xff0c;可以模拟网络终端产生流量&#xff0c;进行网络性能测试&#xff0c;对网络状态进行实时监测&#xff0c;分析和统计。数字计量对于精准数据的网络测试仪来说是一剂强心针&a…...

聊聊在应用层面实现内网穿透功能是否可行

前言 最近接手了供方开发的网关项目&#xff0c;交接文档里面有个内网穿透的功能&#xff0c;一下子就吸引的我的目光。实现这个内网穿透的背景是业务部门有些业务是部署在公网&#xff0c;这些公网的业务想访问内网的业务&#xff0c;但因为公网和内网没打通&#xff0c;导致…...

linux 20.04 安装sougou输入法 重启 可视化界面 无法点击

在Linux 20.04&#xff08;Ubuntu 20.04&#xff09;系统中安装搜狗输入法后&#xff0c;如果遇到重启后可视化界面无法点击的问题&#xff0c;这通常是由于搜狗输入法或其依赖的输入法框架&#xff08;如fcitx&#xff09;与系统的某些部分不兼容所导致的。以下是一些可能的解…...

springboot整合lua脚本在Redis实现商品库存扣减

1、目的 使用lua脚本&#xff0c;可以保证多条命令的操作原子性&#xff1b;同时可以减少操作IO&#xff08;比如说判断redis对应数据是否小于0&#xff0c;小于0就重置为100&#xff0c;这个场景一般是取出来再判断&#xff0c;再存放进行&#xff0c;就至少存在2次IO,用lua脚…...

lspci简介

lspci命令用于列出系统中所有pci设备信息,其输出信息包括设备的bdf地址(总线号、设备号和功能号)、设备类型、厂商信息等。 lspci命令的基本用法: lspci:列出所有pci设备的详细信息 参数: -v:显示详细信息,包括驱动程序、总线和端口等信息 -t:以属性结构显…...

Java从入门到工作2 - IDEA

2.1、项目启动 从git获取到项目代码后&#xff0c;用idea打开。 安装依赖完成Marven/JDK等配置检查数据库配置启动相关服务 安装依赖 如果个别依赖从私服下载不了&#xff0c;可以去maven官网下载补充。 如果run时提示程序包xx不存在&#xff0c;在项目目录右键Marven->Re…...

Mave下载、安装以及idea(2024)进行配置

目录 Maven简介 Maven下载 配置环境变量 配置本地仓库 在idea环境配置Maven 使用Maven创建工程 创建一个普通的java工程 创建一个Web项目 Maven简介 Maven是一个跨平台的项目管理工具&#xff0c;也是Apache组织中的一个成功的开源项目。它主要服务于基于Java的项目构…...

Spark SQL 执行计划解析源码分析

本文用于记录Spark SQL执行计划解析的源码分析。文中仅对关键要点进行提及&#xff0c;无法面面具到&#xff0c;仅描述大体的框架。 Spark的Client有很多种&#xff0c;spark-sql&#xff0c;pyspark&#xff0c;spark- submit&#xff0c;R等各种提交方式&#xff0c;这里以…...

51c嵌入式~单片机~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信&#xff1f; 下面这个“电平转换”电路&#xff0c;理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途&#xff1a;当两个MCU在不同的工作电压下工作&a…...

【electron】electron forge + vite + vue + electron-release-server 自动更新客户端

基本信息 electron forge vue页面&#xff08;中文&#xff09;&#xff1a;https://forge.electron.js.cn/guides/framework-integration/vue-3 electron forge vue页面&#xff08;英文&#xff0c;中文版下面的tab无法点击&#xff09;&#xff1a;https://www.electronfor…...

FastAPI vs Flask 选择最适合您的 Python Web 框架

文章目录 1. 简介2. 安装和设置3. 路由和视图4. 自动文档生成5. 数据验证和序列化6. 性能和异步支持结论 在 Python Web 开发领域&#xff0c;FastAPI 和 Flask 是两个备受欢迎的选择。它们都提供了强大的工具和功能&#xff0c;但是在某些方面有所不同。本文将比较 FastAPI…...

E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

我们在使用Ubuntu系统时经常性使用sudo apt install命令安装所需要的软件库&#xff0c;偶尔会出现如下问题&#xff1a; E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)&#xff0c;是否有其…...