TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发

目录

TDesign Vue Next Starter中后台项目的生产环境部署与CSP内容安全策略、CORS跨源资源共享和服务后端开发

一、TDesign Vue Next Starter中后台项目模板

1.1、项目简介

1.2、使用文档

二、TDesign Vue Next Starter中后台生产环境配置与部署

2.1、vite.config.ts项目配置

三、如何部署生产模式才能渲染出页面

3.1、base基路径

3.2、vite5打包基于vue3的tdesign-vue-next项目的最基础原理

3.2.1、打包前

3.2.2、打包后

四、页面渲染与CORS跨源资源共享

4.1、CORS跨源资源共享

4.2、附常见:《HTTP header配置(跨域请求)》

五、页面渲染与CSP内容安全策略

5.1、CORS允许了但请求的具体资源是否安全可以用CSP策略来解决

5.2、配置CPS后端响应头代码

六、更多的服务后端网络安全开发

6.1、来源策略Referrer-Policy

6.2、不被浏览器发送Referer的情形:

6.3、前端主动在html文件中声明需要发送的发送Referer

原创不易,析构实现更不易,需要的就联系我购买

喜欢的,就收藏并点个赞,鼓励我继续技术的原创写作及经验分享:


一、TDesign Vue Next Starter中后台项目模板

1.1、项目简介

        TDesign Vue Next Starter 是一个基于腾讯官方TDesign,使用 Vue3、Vite、Pinia、TypeScript 开发,可进行个性化主题配置,旨在提供项目开箱即用的、配置式的中后台项目。

        特性:

  • 内置多种常用的中后台页面

  • 完善的目录结构

  • 完善的代码规范配置

  • 支持暗黑模式

  • 自定义主题颜色

  • 多种空间布局

  • 内置 Mock 数据方案

  • 支持TS

        TDesign 页面模板:
https://tdesign.tencent.com/starter/

1.2、使用文档

TDesign Starter 页面模板icon-default.png?t=N7T8https://tdesign.tencent.com/starter/docs/vue-next/get-startedGitHub - Tencent/tdesign-vue-next-starter: A starter-kit for TDesign Vue Next UI componentsA starter-kit for TDesign Vue Next UI components. Contribute to Tencent/tdesign-vue-next-starter development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/Tencent/tdesign-vue-next-starter

二、TDesign Vue Next Starter中后台生产环境配置与部署

2.1、vite.config.ts项目配置

        vite.config.ts配置相对完整规范,可做到开箱即用,其中vite的mode,即4种模式:

        vite默认在项目的根路径,让用户创建和配置“模式文件”。它们分别是:

        .env.test.  env.develepment、.env、env.site,含义为:测试模式、开发模式、生产模式、自定义模式。

       每种模式,都可以在项目的“配置文件”package.json中创建脚本编译和运行条目:

三、如何部署生产模式才能渲染出页面

3.1、base基路径

       基路径base,就是vite“用户配置接口”中,同时适用于“开发环境”和“生产环境”的站点部署的url的path的根路径;URL 由不同的部分组成:

        基路径base,就是你的站点的入口文件(默认为index.html)部署到生产环境的path to file的“逻辑请求”对应的“物理路径”,即告知vite打包时,应当将项目打包到怎样的站点路径下:

        本案,基路径base配置为:

        # 打包路径 根据项目不同按需配置:

        VITE_BASE_URL = /nosessionhtmls/vue-ssr/my-tnext-starter/dist/

       这一点,对于前端初学者,是一个坑,要特别注意!否则,你一开始,发出的请求就错了!!!

       举例:

站点入口:https://www.cpuofbs.com/nosessionhtmls/vue-ssr/my-tnext-starter/dist/index.html
基路径base:/nosessionhtmls/vue-ssr/my-tnext-starter/dist/

        进入站点后,vue3的Router路由器便生效了!路由驱动了站点内的菜单、按钮、链接等组件的事件及其行为,比如跳转等,譬如result/404、dashboard/base等请求的路由拦截、路由连接等。

3.2、vite5打包基于vue3的tdesign-vue-next项目的最基础原理

       如果你要学习该原理,最佳实践就是,对比打包前、打包后的结果:

3.2.1、打包前

       入口文件index.html :

3.2.2、打包后

       入口文件index.html :

        可见,如果上述基路径base设置不当,首页渲染可能出现意想不到的结果,甚至视觉上看不到结果。

四、页面渲染与CORS跨源资源共享

4.1、CORS跨源资源共享

        我们可以在生产环境的“模式配置”文件.env中,存在API的URL与你的站点的“源”是不一样的:

       请求的API的“源”和你的站点的“源”不一样,就设计到“CORS”跨源资源共享问题。

       当请求到达你的后端服务时,你的后端代码应当设置响应头,告知浏览器代理,请求的源允许在你的站点中执行其脚本:

DoCheckCorsOrigin(const Url: string; Request: THttpRequest; aReply: THttpReply; var Handled: Boolean);

       Access-Control-Allow-Origin: https://www.cpuofbs.com

       譬如,站点内跨源请求:

       Request URL: https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/get-menu-list-i18n?_t=1708676439865

       需要,服务后端代码配置响应头:

        否则。浏览器的调试工具控制台,将向你发出拒绝请求的信息并告知你具体的原因:

        Access to Axios Request at ''https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/get-menu-list-i18n?_t=1708671724342' from origin 'https://www.cpuofbs.com/'
has been blocked by CORS policyNo 'Access-Control-Allow-origin'header is present on the requested resource.



4.2、附常见:《HTTP header配置(跨域请求)》

HTTP header配置(跨域请求)_内容分发网络 CDN_用户指南_域名配置_高级配置HTTP header即HTTP消息头,是指在超文本传输协议(Hypertext Transfer Protocol,HTTP)的请求和响应消息中的消息头部分,定义了HTTP传输过程中的具体参数。跨域资源共享CORS(Cross-origin resource sharing)简称跨域访问,当A网站去访问B网站的资源时,就会发出跨域请求。icon-default.png?t=N7T8https://support.huaweicloud.com/usermanual-cdn/cdn_01_0021.html

五、页面渲染与CSP内容安全策略

5.1、CORS允许了但请求的具体资源是否安全可以用CSP策略来解决

        如果你的后端服务对发起请求的原始资源(比如上例,是TDesign Vue Next Startericon-default.png?t=N7T8https://www.cpuofbs.com/nosessionhtmls/vue-ssr/my-tnext-starter/dist/index.html)代码指定了CORS策略(不配置该策略的站点跨域时是很危险的,意味着恶意站点代码随时可能侵入),那么其初始化器Initiator(详见浏览器开发工具请求资源的Initiator页签)的后续引用的资源,都必须要遵循该策略:

       如果,你的代码的CSP策略中,未对上述CORS的资源请求设置CSP的连接源标头值(connect-src),则浏览器会进行拦截并提示CSP的阻塞信息及阻塞原因:

index-C5WRK1nU.js:2570 Refused to connect to 'https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/get-menu-list-i18n?_t=1708671724342' because it violates the following Content Security Policy directive: "connect-src https://www.cpuofbs.com https://cpuofbs.com https://www.cpuofbs.com:8080 https://cpuofbs.com:8080 wss://www.cpuofbs.com".

index-C5WRK1nU.js:2570 Refused to connect to 'https://service-bv448zsw-1257786608.gz.apigw.tencentcs.com/api/get-menu-list-i18n?_t=1708671724342' because it violates the following Content Security Policy directive: "connect-src https://www.cpuofbs.com https://cpuofbs.com https://www.cpuofbs.com:8080 https://cpuofbs.com:8080 wss://www.cpuofbs.com". 

       从而你得到的是无头响应

        那么,如何解决呢?如下:

5.2、配置CPS后端响应头代码

       硬编码响应头:

Content-Security-Policy: connect-src https://你的站点允许的源1 [空格] https://你的站点允许的源2 [空格]

六、更多的服务后端网络安全开发

6.1、来源策略Referrer-Policy

       Referrer-Policy主要用来对当前源下的所有请求的Request URL来源进行细分监管,后端服务代码设置该响应头,告知浏览器代理,分别应当如何处理。

       它与请求头Referer并无直接联系。并非所有的请求都会被浏览器附带Referer来源头发送到服务端,但,跨源的请求,通常浏览器会发送Referer标头,并可能同时发送Origin请求头。

       对请求的任何http(s)资源,响应头Referrer-Policy,可以有以下几种方案:

#告诉浏览器代理,发送Referer请求头的规则如下————
# 移除Referer请求头,后续的请求中,访问来源信息不再随请求一起发送到服务:
Referrer-Policy: no-referrer
# 目标安全级别降级时(比如初始化器链路从https安全请求 → 转到http不安全请求、从https转到 → file协议或data:URI)不发送Referer标头:
Referrer-Policy: no-referrer-when-downgrade
# 在Referer请求标头中,只发送“源”(尾部带/):
Referrer-Policy: origin
# 跨源请求的资源仅发送其“源”:
Referrer-Policy: origin-when-cross-origin
# 同源请求才发送Referer请求头的地址,但跨源请求不发送Referer请求头
Referrer-Policy: same-origin
# 同等安全级别时,才发送“源”作为引用地址 (https → 转到https ,或http → 转到http),但降级时不发送:
Referrer-Policy: strict-origin
# 同源请求,发送请求资源的完整URL;同安全级别的跨源请求,仅发送“源”;目标安全级别为降级时不发送 Referer请求头:
Referrer-Policy: strict-origin-when-cross-origin
# 无论是否同源,均发送,且发送不含searchParams参数的URL的Referer请求头:
Referrer-Policy: unsafe-url

6.2、不被浏览器发送Referer的情形:

       ◆请求协议为 "file://" 或者 "data" URI;
       ◆请求源为不安全协议http,Referer是https。

6.3、前端主动在html文件中声明需要发送的发送Referer

6.3.1、在head头部的<meta>元素进行申明

       申明的策略参见5.1中的方案;用属性字段name及其数值属性字段content标识。

       例如:

<meta name="referrer" content="origin" />

<link rel="stylesheet;origin" crossorigin href="/nosessionhtmls/vue-ssr/my-tnext-starter/dist/assets/index-UVIbHW0Y.css">

6.3.2、在body的元素中申明

<a href="http://example.com" referrerpolicy="origin">在body的元素中申明Referer</a>
<a href="http://example.com" rel="noreferrer">在body的a、area或link元素中将rel属性设置为noreferrer</a>

6.3.3、在css中申明

6.3.3.1、外部 CSS 样式表使用默认策略 (no-referrer-when-downgrade),除非 CSS 样式表的响应消息通过 Referrer-Policy 首部覆盖该策略;
6.3.3.2、 <style> 元素或元素的style属性,遵从文档的referrer策略。

————————————————

原创不易,析构实现更不易,需要的就联系我购买

喜欢的,就收藏并点个赞,鼓励我继续技术的原创写作及经验分享:

部署vue element-ui admin报错(vue2)

centOS部署vscode_pulledup的博客-CSDN博客

————————————————

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

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

相关文章

ChatGPT在数据处理中的应用

ChatGPT在数据处理中的应用 今天的这篇文章&#xff0c;让我不断体会AI的强大&#xff0c;愿人类社会在AI的助力下走向更加灿烂辉煌的明天。 扫描下面二维码注册 ​ 数据处理是贯穿整个数据分析过程的关键步骤&#xff0c;主要是对数据进行各种操作&#xff0c;以达到最终的…

Linux第62步_备份移植好的所有的文件和文件夹

1、备份“my-tfa”目录下所有的文件和文件夹 1)、打开终端 输入“ls回车”&#xff0c;列出当前目录下所有的文件和文件夹 输入“cd linux回车”&#xff0c;切换“linux”目录下 输入“ls回车”&#xff0c;列出当前目录下所有的文件和文件夹 输入“cd atk-mp1/回车”&am…

PCIe P2P DMA全景解读

温馨提醒&#xff1a;本文主要分为5个部分&#xff0c;总计4842字&#xff0c;需要时间较长&#xff0c;建议先收藏&#xff01; P2P DMA简介 P2P DMA软硬件支持 CXL P2P DMA原理差异 P2P DMA应用场景 P2P DMA技术挑战 一、P2P DMA简介 P2P DMA&#xff08;Peer-to-Peer…

发现了一个超赞的办公利器!ONLYOFFICE 文档 8.0 强势登场!

迎接 ONLYOFFICE 文档 v8.0发布后的全新升级&#xff01;现在&#xff0c;适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序更加强大&#xff01;全新的 RTL 界面、本地界面主题、与 Moodle 的集成等实用功能&#xff0c;让你的办公体验更加出色&#xff01;全新…

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种&#xff1a;Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…

alist修改密码(docker版)

rootarmbian:~# docker exec -it [docker名称] ./alist admin set abcd123456 INFO[2024-02-20 11:06:29] reading config file: data/config.json INFO[2024-02-20 11:06:29] load config from env with prefix: ALIST_ INFO[2024-02-20 11:06:29] init logrus..…

Redis篇之缓存雪崩、击穿、穿透详解

学习材料&#xff1a;https://xiaolincoding.com/redis/cluster/cache_problem.html 缓存雪崩 什么是缓存雪崩 在面对业务量较大的查询场景时&#xff0c;会把数据库中的数据缓存至redis中&#xff0c;避免大量的读写请求同时访问mysql客户端导致系统崩溃。这种情况下&#x…

链表之“无头单向非循环链表”

目录 ​编辑 1.顺序表的问题及思考 2.链表 2.1链表的概念及结构 2.2无头单向非循环链表的实现 1.创建结构体 2.单链表打印 3.动态申请一个节点 3.单链表尾插 4.单链表头插 5.单链表尾删 6.单链表头删 7.单链表查找 8.单链表在pos位置之前插入x 9.单链表删除pos位…

85、字符串操作的优化

上一节介绍了在模型的推理优化过程中,动态内存申请会带来额外的性能损失。 Python 语言在性能上之所以没有c++高效,有一部分原因就在于Python语言将内存的动态管理过程给封装起来了,我们作为 Python 语言的使用者是看不到这个过程的。 这一点有点类似于 c++ 标准库中的一些…

探索Promise异步模式抽象的变体——Promise.race篇

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 前言初识Promise.race探索Promise.raceAPI实例 前言 在本栏前一篇Promise.all中&#xff0c;我们可以实…

谷歌最新黑科技:Gemini 1.5携100万Token挑战AI多模态极限

最近科技圈再次迎来震撼弹&#xff01;除了火爆全球的openAI Sora文生视频模型外&#xff0c;谷歌发布了其大模型矩阵的最新成员——Gemini 1.5&#xff0c;一举将上下文窗口长度扩展至惊人的100万个tokens。这不仅仅是一个简单的数字增加&#xff0c;而是一次划时代的飞跃&…

万界星空科技电子机电行业MES系统,2000元/年起

电子行业在生产管理上具有典型的离散制造特点&#xff0c;采用多品种、多批量或单件的生产组织方式。产品升级换代迅速&#xff0c;生命周期短&#xff0c;变更频繁&#xff0c;版本控制复杂。 同时产品的种类较多&#xff0c;非标准产品多&#xff0c;加工工序复杂&#xff0…

三种标注格式VOC、COCO、YOLO及其转换

最近在做基于深度学习的目标检测&#xff0c;数据标注软件选择的LabelImg。 常用的几种标注格式及目录安排 一、VOC(标注文件xml结尾) 首先看一下VOC格式的分布&#xff1a; 在VOC这些文件夹中&#xff0c;我们主要用到&#xff1a; ① JPEGImages文件夹&#xff1a;图片 ②…

Dapp的优势与前景,具唯一性公开可追溯

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 在…

216699-36-4,6-Rhodamine X NHS ester,具有良好的脂溶性

117491-83-5&#xff0c;1890922-83-4&#xff0c;216699-36-4&#xff0c;6-Rhodamine X NHS ester&#xff0c;ROX SE, 6-isomer&#xff0c;6-ROX NHS 活化酯 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;117491-83-5&#xff0c;1890922-83-4&#xff0c;21…

【知识整理】Git Commit Message 规范

一. 概述 前面咱们整理过 Code Review 一文&#xff0c;提到了 Review 的重要性&#xff0c;已经同过gitlab进行CodeReview 的方式&#xff0c;那么本文详细说明一下对CodeReivew非常重要的Git Commit Message 规范。 我们在每次提交代码时&#xff0c;都需要编写 Commit Mes…

【C语言】指针变量未初始化

我们知道&#xff1a;全局变量未赋初值&#xff0c;编译器会直接赋值为0&#xff1b;局部变量如果未赋初值&#xff0c;则会维持上一状态保存在该地址上的值&#xff0c;这个值是随机的。把这个值赋值给局部变量是没有意义的。 但是指针变量是如何解决不赋初值&#xff1f; 指…

备战蓝桥杯—— 双指针技巧巧答链表2

对于单链表相关的问题&#xff0c;双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决&#xff1a; 合并两个有序链表&#xff1a; 使用两个指针分别指向两个链表的头部&#xff0c;逐一比较节点的值&#xff0c;将较小的节点链接到结果链表…

编程学习线上提问现场解答流程,零基础学编程从入门到精通

编程学习线上提问现场解答流程 一、前言 之前给大家分享的一款中文编程工具&#xff0c;越来越多的学员使用这个工具学习编程。 在学习中有疑难问题寻求解答流程 1、可以在本平台留言或发私信联系老师 2、可以在群提问及时解答问题 3、通过线上会议的方式&#xff0c;电脑…

Hudi程序导致集群RPC偏高问题分析

1、背景 Hudi程序中upsert操作频繁&#xff0c;过多的删除和回滚操作,导致集群RPC持续偏高 2、描述 hudi采用的是mvcc设计&#xff0c;提供了清理工具cleaner来把旧版本的文件分片删除&#xff0c;默认开启了清理功能&#xff0c;可以防止文件系统的存储空间和文件数量的无限…