如何使用CORS和CSP保护前端应用程序安全

前端应用在提供无缝用户体验方面起着核心作用。在当今互联网的环境中,第三方集成和API的普及使得确保强大的安全性至关重要。安全漏洞可能导致数据盗窃、未经授权访问以及品牌声誉受损。本文将向您展示如何使用CORS和CSP为您的网页增加安全性。
嗨,大家好!️欢迎阅读“使用CORS和CSP保护前端应用程序”——这是今天不断发展的网络环境中必读的文章。
想象一下,一个恶意脚本被注入到你的应用程序中,窃取敏感用户数据或将用户重定向到欺诈网站。可怕吧?但不用担心!通过正确实施CORS和CSP,我们可以加固前端应用程序,保持领先,抵御潜在威胁。
本文的目的和范围
在本文中,我们深入探讨了CORS和CSP,为您揭开了这些安全措施的神秘面纱。我们将学习如何在React、Angular和Vue.js等各种前端框架中有效地实施它们,提供实际示例和代码片段。到最后,您将具备像专业人士一样保护前端应用程序的知识!
所以,如果你渴望保护你的用户并加强你的应用程序的安全性,让我们卷起袖子,深入了解CORS和CSP的世界。你的应用程序和用户会感谢你的!让我们开始吧!
CORS和CSP是什么?
让我们从基础知识开始。关键的安全功能被称为CORS,即跨域资源共享,它使服务器能够管理哪些外部资源可以访问Web应用程序。通过阻止每个恶意的跨域请求,这可以保护我们的应用程序更安全。
一种有效的防御机制,用于抵御跨站脚本攻击(XSS)和数据泄露等内容注入攻击,就是内容安全策略(CSP)。通过允许开发人员指定前端应用程序可以加载资源的来源,它降低了未经授权的脚本执行的可能性。
// Sample code block demonstrating a simple CORS configuration in Node.js
const express = require("express");
const app = express();// Enable CORS for all routes
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
next();
});// ... the rest of your routes and logic 注意:提供的代码片段是使用Express在Node.js中进行CORS配置的基本示例,允许来自任何来源的请求。在生产环境中,您应该指定可信任的来源,而不是使用'*'。
了解CORS
好的,让我们深入了解CORS的细节。
同源策略及其局限性
每个网络浏览器都会执行同源策略,该策略阻止网页向原始服务页面之外的域名发出请求。通过这个策略的帮助,可以避免潜在的安全风险,比如未经授权的数据访问,确保在一个源中运行的脚本无法在没有明确许可的情况下访问另一个源的资源。
然而, Same-Origin 政策也有一些限制。例如,它阻止了有效的跨域请求,而这对于依赖于来自不同服务器的API的Web应用程序是必要的。如果没有CORS,您的前端应用程序将无法从不同域上托管的API中检索数据。这就是CORS发挥作用的地方,它能够解决这个问题!
CORS作为一种安全机制
一个网络服务器可以使用CORS机制明确地授予网络客户端访问其他来源资源的权限。服务器可以通过使用特定的HTTP请求头告诉浏览器哪些来源被允许访问它们的资源。
CORS的工作原理及其在保护前端应用程序中的作用
当前端应用程序发起跨域请求时,浏览器会检查服务器的响应是否包含必要的CORS头部。如果头部授予许可(例如,"
Access-Control-Allow-Origin "),浏览器允许前端应用程序访问所请求的资源。如果头部缺失或不正确,浏览器会因安全问题而阻止该请求。
CORS在保护前端应用程序方面起着关键作用,确保只有受信任的来源可以与您的应用程序后端资源进行交互。这可以防止未经授权的访问和潜在的数据泄露,同时仍然允许合法的跨域请求,促进安全和功能完善的网络生态系统。
实施CORS
既然我们已经明白了CORS的重要性,那么让我们动起手来,在我们的前端应用中实施它吧!
CORS的配置选项和头文件
要在后端服务器中启用CORS,您需要设置特定的响应头。最重要的头部是“
Access-Control-Allow-Origin ”,它指定了允许访问您资源的来源。您可以使用通配符(*)来允许任何来源的访问,但更安全的做法是明确指定可信任的来源。
其他关键的头部包括
“Access-Control-Allow-Methods ”(定义允许的HTTP方法),“ Access-Control-Allow-Headers ”(列出允许的请求头),以及可选的“ Access-Control-Allow-Credentials ”(如果您需要在跨域请求中包含凭据,如cookies)。
在不同的框架中启用CORS的逐步指南
启用CORS的方法因后端框架而异。让我们来看一下流行的前端框架的逐步指南:
1. Express (Node.js):
const express = require("express");
const app = express();// Enable CORS for all routes
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin","https://www.trusted-origin.com",
);
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
// Optionally, allow credentials (e.g., cookies) to be sent in cross origin requests
res.setHeader("Access-Control-Allow-Credentials", "true");
next();
}); 2. Django (Python):
# In settings.pyCORS_ORIGIN_WHITELIST = ['https://www.trusted-origin.com',
]CORS_ALLOW_METHODS = ['GET', 'POST', 'PUT', 'DELETE']CORS_ALLOW_HEADERS = ['Content-Type', 'Authorization']CORS_ALLOW_CREDENTIALS = True # Optionally, allow credentials CORS实施的常见陷阱和最佳实践
在实施CORS时要注意潜在的陷阱,比如过于宽松的“
Access-Control-Allow-Origin ”设置可能会将您的资源暴露给未经授权的来源。为了避免安全漏洞,始终验证和清理输入数据。
为了降低风险,最佳实践要求处理预检请求,设置严格的“
Access-Control-Allow-Origin ”值,并指定适当的“ Access-Control-Allow-Methods ”和“ Access-Control-Allow-Headers ”。
为了为您的前端应用程序创建一个强大的防御,除了CORS之外,还应该添加其他安全措施,如输入验证和身份验证,这应该被视为安全的基本层。要警惕并防范对您的应用程序的威胁!
CSP简介
好了,朋友们,让我们换个话题,探索一下 Content Security Policy (CSP)的领域——这是保护我们前端应用程序的有力盟友!️
内容安全策略概述及其目标
您的前端应用程序的内容安全策略(CSP)就像一个保镖,决定谁可以进入,谁不可以。通过限制应用程序可以加载外部内容的来源,如脚本、样式表和图像,它旨在减少内容注入攻击,如跨站脚本(XSS)。
即使恶意脚本通过用户生成的内容或外部资源进入您的应用程序,您可以通过定义严格的策略来阻止它们被执行。通过精确控制您的应用程序可以加载和不能加载的内容,内容安全策略(CSP)作为额外的安全层,最大限度地减少攻击面。
理解限制外部内容的必要性
在当今的网络中,前端应用程序通常依赖于外部资源,如库、字体或分析脚本。然而,这些依赖关系可能被攻击者利用,将有害代码注入到您的应用程序中,从而危及用户数据并破坏信任。通过内容安全策略(CSP)限制外部内容,可以确保只有可信的来源被允许,有效地遏制此类威胁。
CSP与其他安全机制的比较
CSP在安全机制中与XSS过滤器和跨站请求伪造(CSRF)令牌有所不同。虽然XSS过滤器试图检测和中和恶意脚本,但它们并不是百分之百可靠,并且可能存在兼容性问题。另一方面,CSRF令牌专注于防止未经授权的操作,但无法解决内容注入攻击。
CSP通过完全阻止恶意内容加载来解决根本原因,使其更加强大和可靠。将CSP与其他安全措施结合使用,可以构建一个强大的防御系统,保护您的前端应用免受各种威胁。
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'trusted-scripts.com'; style-src 'self' 'trusted-styles.com'; img-src 'self' data:"> 注意:在提供的 code snippet 中,CSP策略只允许从相同的源和'trusted-scripts.com'加载脚本,从相同的源和'trusted-styles.com'加载样式表,以及从相同的源和数据URL加载图像。您应根据您的应用程序要求自定义策略。
实施CSP
是时候在我们的前端应用程序上加强安全措施了,使用内容安全策略(CSP)!让我们立即开始吧!️
通过头部和元标签定义内容安全策略
CSP可以通过HTTP响应头或元标签来定义。对于HTTP头,服务器在其响应中包含“Content-Security-Policy”头,指定策略指令。另一方面,使用HTML中的元标签可以直接在文档中定义策略。
通过HTTP头设置CSP(在Node.js中使用Express):
const express = require("express");
const app = express();// Set the CSP header for all responses
app.use((req, res, next) => {
res.setHeader("Content-Security-Policy","default-src 'self'; script-src 'self' 'trusted-scripts.com'; style-src 'self' 'trusted-styles.com'; img-src 'self' data:",
);
next();
}); 通过元标签设置CSP(在HTML中):
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'trusted-scripts.com'; style-src 'self' 'trusted-styles.com'; img-src 'self' data:">
<!-- Rest of the head section -->
</head>
<body>
<!-- Your app’s content -->
</body>
</html> 探索每个CSP指令
CSP提供了多种指令来控制特定类型的资源和操作。例如:
default-src :如果其他指令没有明确指定,该指令定义了它们的默认行为。
script-src :指定 JavaScript 的允许来源。
style-src :设置样式表的来源。
img-src :确定图像的允许来源。
您还可以使用 nonce 和 hash 属性来添加动态脚本和内联样式,同时仍遵守策略。
案例研究展示了CSP如何减轻常见的前端安全漏洞
CSP在阻止安全漏洞方面是一位超级英雄!它通过阻止未经授权的脚本执行来防止XSS攻击,通过限制资源加载到可信源来阻止 data exfiltration ,并通过控制框架嵌入来减轻点击劫持攻击。通过实施CSP,许多知名网站成功地挫败了攻击并保护了他们的用户安全。
通过根据您的应用程序要求定制的正确CSP指令,您可以自信地抵御各种前端安全威胁,并确保用户享受安全的浏览体验。所以,准备好利用CSP的力量,像专业人士一样加固您的前端应用程序吧!
结合CORS和CSP
既然我们已经装备了CORS和CSP,现在是时候发挥它们的综合力量,为我们的前端应用程序创建一个坚不可摧的堡垒了!
CORS和CSP在加强前端应用安全方面的协同效应
CORS和CSP就像一对默契的搭档,共同努力保护您的应用程序免受不同角度的攻击。CORS专注于控制跨域请求,确保只有受信任的来源可以访问您的后端资源。与此同时,CSP则解决内容注入攻击问题,防止未经授权的脚本在您的前端执行。
通过结合这两种机制,我们不仅保护数据传输,还保护我们前端的完整性。恶意脚本试图利用跨源弱点或绕过服务器端安全措施的企图都会被内容安全策略(CSP)的警惕性所阻止。
应对挑战和潜在冲突
同时实施CORS和CSP可能会带来一些挑战和冲突。例如,当CORS允许来自特定域的跨域请求时,这些域名应该包含在CSP策略中,以便从这些域加载资源。
此外,如果您正在使用内联脚本/样式或动态脚本加载,您需要设置适当的CSP非ces或哈希来允许它们,同时仍然遵守策略。这两种机制之间的协调需要仔细考虑和测试。
<!-- Sample CSP policy with CORS trusted origin included -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'trusted-scripts.com'; style-src 'self' 'trusted-styles.com'; img-src 'self' data: 'trusted-origin.com'"> 最终,结合CORS和CSP的好处超过了挑战。您的前端应用程序将成为一个安全的堡垒,通过多层保护加固。请记得定期审查和优化您的策略,以确保对新兴威胁有强大的防御能力。
所以,让我们将CORS和CSP和谐地结合起来,为每个人创造一个安全可靠的用户体验!️
测试和调试
作为前端应用安全的守护者,我们必须彻底测试和调试我们的CORS和CSP配置,以确保其有效性。让我们探索一些工具和技术来应对这个关键任务!
测试CORS和CSP配置的工具和技术
Browser Developer Tools:现代浏览器提供强大的开发者工具,可以在控制台和网络选项卡中显示CSP违规情况。它们帮助您识别和纠正与策略相关的任何问题。
Online CSP Analyzers:有几个在线工具可以帮助您分析CSP头部,并提供关于潜在漏洞和配置错误的详细报告。
CORS Tester Extensions:浏览器扩展程序如“CORS Everywhere”或“CORS Toggle”可让您测试应用程序的不同CORS配置,帮助您确保跨域请求按预期工作。
Security Headers Checkers:在线安全头检查器可以评估您的CORS和CSP头,更容易发现任何不一致或弱点。
识别和解决与跨域请求和内容限制相关的问题
Console Errors:检查浏览器控制台以查找与CORS相关的错误和CSP违规报告。使用此信息来优化您的配置。
Testing with Different Origins:通过使用各种来源(可信和不可信的)来验证应用程序的行为。这样可以确保您的CORS和CSP策略能够充分限制访问。
Testing Dynamic Content:如果您的应用程序动态生成脚本,请测试和调整CSP非ces或哈希以适应它们。
Opt-In Reporting:启用CSP报告功能,从浏览器收集违规报告并获取潜在问题的洞察。这些报告有助于完善您的策略。
Iterative Testing(迭代测试):随着您的应用程序的发展,定期进行测试以确保您的政策与最新要求相一致。
<!-- Example of enabling CSP Reporting through the report-uri directive -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; report-uri /csp-violation-report-endpoint"> 记住,测试和调试是持续进行的过程。保持警惕,积极解决潜在问题,并利用测试中获得的见解来优化您的CORS和CSP配置。通过这样做,您将为您的前端应用程序实现一个优化的、坚不可摧的安全姿态,保护您的用户及其数据免受任何潜在威胁。祝您测试愉快!️
现实世界的例子
让我们进入现实世界的领域,在那里,CORS和CSP这对动态二人组以勇气守护着前端应用程序的安全,展现出他们的实力!️
审视现实场景
防止跨站脚本攻击(XSS):想象一个允许用户发表评论的博客网站。通过一个精心制作的内容安全策略(CSP),内联脚本和未经授权的外部脚本被阻止执行。这样可以阻止潜在的XSS攻击,保护网站的完整性和访问者的安全。
保护单页应用程序(SPA)中的跨域请求:SPA经常从不同域上托管的多个API获取数据。通过实施CORS,这些SPA限制跨域请求仅限于授权服务器,防止攻击者利用跨域弱点。
分析本可以避免的安全漏洞
由于CORS配置错误导致的数据泄露:在配置错误的后端系统中,敏感数据可能通过CORS暴露给未经授权的域名。通过正确的CORS策略限制来源,可以避免此类数据泄露。
通过CSP绕过进行注入攻击:缺乏CSP策略或限制不严的网站可能会成为内容注入攻击的目标。通过执行强大的CSP策略,可以减轻此类安全漏洞。
<!-- Sample strict CSP policy to mitigate content injection -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; block-all-mixed-content;"> 在这些现实世界的例子中,我们目睹了CORS和CSP的战略应用如何起到一种盔甲的作用,击退潜在威胁,确保用户的浏览体验更加安全。通过勤奋地应用这些安全措施,开发人员加固了他们的前端应用,赢得了受众的信任,并保护敏感数据不落入错误的手中。保持警惕,拥抱CORS和CSP的力量,为所有人创造一个更安全的数字世界!️
结束
恭喜,无畏的开发者们! 你们已经穿越了CORS和CSP的领域,学习了这些强大的守护者如何保护我们的前端应用免受恶意威胁。让我们回顾一下CORS和CSP的重要性,并激励你们在保护Web应用方面发挥带头作用!️
CORS和CSP的重要性回顾
CORS,我们在跨域保护方面的可靠盟友,确保只有授权的域名可以访问我们的后端资源。通过控制跨域请求,它阻止了未经授权的访问,并保护数据免受窥视。另一方面,CSP通过限制内容来源,防止内容注入攻击和XSS漏洞,加强了前端的安全性。它们共同构成了一道坚不可摧的防线,为我们的用户创造了一个安全可靠的环境。
采用最佳实践
作为数字领域的守护者,我们有责任在实施CORS和CSP时采用最佳实践。使用适合您应用程序需求的严格策略,仅允许可信任的来源,并认真测试和调试您的配置。随着应用程序的发展,定期更新您的策略,保持对新兴威胁的防范。
虽然没有绝对安全的措施,但通过将CORS和CSP与其他安全措施结合起来,您可以为前端应用程序提供多重保护层。如果我们积极主动并保持警惕,我们可以加强我们的数字作品,并为每个人建立一个更安全的网络。
所以让我们承诺成为我们应用程序所需要的保护者!采用CORS和CSP,明智地利用它们的影响力,保护我们的用户和他们的数据安全。让我们共同创造一个更安全的数字未来!️
由于文章内容篇幅有限,今天的内容就分享到这里,文章结尾,我想提醒您,文章的创作不易,如果您喜欢我的分享,请别忘了点赞和转发,让更多有需要的人看到。同时,如果您想获取更多前端技术的知识,欢迎关注我,您的支持将是我分享最大的动力。我会持续输出更多内容,敬请期待。
相关文章:
如何使用CORS和CSP保护前端应用程序安全
前端应用在提供无缝用户体验方面起着核心作用。在当今互联网的环境中,第三方集成和API的普及使得确保强大的安全性至关重要。安全漏洞可能导致数据盗窃、未经授权访问以及品牌声誉受损。本文将向您展示如何使用CORS和CSP为您的网页增加安全性。 嗨,大家好…...
C/C++输出硬币翻转 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C硬币翻转 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C硬币翻转 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 假设有N个硬币(N为不大于5000的正整数),从1…...
ipad可能会在iOS 16中失去智能家居中心功能
在iOS 16测试版代码中发现的文本表明苹果将放弃对iPad家庭中心的支持 家庭app迎来重大改版,未来更将对智能家居互联互通标准Matter提供支持。 即使某一款智能家居设备再优秀,只要它没有接入HomeKit,那么就不能在苹果的家庭app中直接管理控制。…...
maven打包可运行jar
普通java程序 <build><finalName>JavaDeviceClient</finalName><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><…...
Arcgis连接Postgis数据库(Postgre入门十)
效果 步骤 1、矢量数据首先有在postgis数据库中 这个postgis数据库中的一个空间数据,数据库名称是test3,数据表名称是test 2、Arcgis中连接postgis数据库中 3、成功连接 可以将数据拷贝或导入到gdb数据库中...
【蓝桥杯选拔赛真题17】C++时间换算 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
目录 C/C++时间换算 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <...
【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家
目录 前言1 使用HAI服务作画的步骤1.1 注册腾讯云账户1.2 创建算力服务器1.3 进入模型管理界面1.4 汉化界面1.5 探索AI绘画 2 模型参数的含义和调整建议2.1 模型参数的含义和示例2.2 模型参数的调整建议 3 调整参数作画的实践和效果3.1 实践说明3.2 实践效果13.3 实践效果23.4 …...
安卓常见设计模式10------责任链模式(Kotlin版)
1. W1 是什么,什么是责任链模式? 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它用于将请求的发送者和接收者解耦,并将请求沿着一个处理链进行传递,直到有一个处理者能…...
利用 Google Artifact Repository 构建maven jar 存储仓库
参考了google 官方文档 https://cloud.google.com/artifact-registry/docs/java/store-java#gcloud_1 首先 enable GAR api gcloud services enable artifactregistry.googleapis.com gcloud services list | grep -i artifact artifactregistry.googleapis.com Artifac…...
Facebook广告被暂停是什么原因?Facebook广告账号被封怎么办?
许多做海外广告投放的小伙伴经常遇到一个难题,那就是投放的Facebook广告被拒或 Facebook 广告帐户被关闭赞停的经历,随之而来的更可能是广告账户被封,导致资金的损失。本文将从我自身经验,为大家分享,Facebook广告被暂…...
Javaweb之javascript的BOM对象的详细解析
1.5.2 BOM对象 接下来我们学习BOM对象,BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作BOM对象的相关属性或者函数来完成。例如:…...
使用Nginx和Spring Gateway为SkyWalking的增加登录认证功能
文章目录 1、使用Nginx增加认证。2、使用Spring Gateway增加认证 SkyWalking的可视化后台是没有用户认证功能的,默认下所有知道地址的用户都能访问,官网是建议通过网关增加认证。 本文介绍通过Nginx和Spring Gateway两种方式 1、使用Nginx增加认证。 生…...
Android 12.0 增加多张图片作为系统静态壁纸的功能实现
1.前言 在12.0的系统rom定制化开发中,在做系统定制化开发中,在对系统的静态壁纸做定制的时候,需要增加几种静态壁纸可以让用户自己设置壁纸,所以可以在壁纸的系统应用中 添加几种静态壁纸图片,然后配置好 就可以在选择壁纸的时候,作为静态壁纸,接下来看如何具体实现这个…...
无线优化之RRM模板
一、简介 RRM即,Radio Resource Management,射频资源管理 WLAN技术是以射频信号(如2.4G/5G的无线电磁波)作为传输介质,无线电磁波在传输过程中因周围环境导致无线信号衰减,从而影响无线用户上网的服务质量。 RRM模板主要用于保持最优的频射资源状态,自动检查周围无线…...
BI 数据可视化平台建设(1)—交叉表组件演变实战
作者:vivo 互联网大数据团队 - Zhu Jianchen 本文是vivo互联网大数据团队《BI数据可视化平台建设》系列文章第1篇 - 交叉表组件。 交叉表在数据分析里应用广泛,通过本文,你将了解到: 交叉表的基本概念,以及BI可视化平…...
Python---练习:求幸运数字6
案例: 幸运数字6(只要是6的倍数):输入任意数字,如数字8,生成nums列表,元素值为1~8,从中选取幸运数字移动到新列表lucky,打印nums与lucky。 思考: 要求是6的…...
【云栖2023】王峰:开源大数据平台3.0技术解读
本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:王峰 | 阿里云研究员,阿里云计算平台事业部开源大数据平台负责人 演讲主题:开源大数据平台3.0技术解读 实时化与Serverless是开源大数据3.0时代的必然选…...
如何改变Wi-Fi的IP地址,提高网络连接稳定性和速度
Wi-Fi已经成为我们日常生活中必不可少的一部分。大多数家庭和办公室都依赖于Wi-Fi来连接网络和进行各种在线活动。然而,有时我们可能会遇到网络连接不稳定或速度较慢的问题。这可能是由于IP地址的设置不当所导致的。虎观代理小二二将向您介绍如何改变Wi-Fi的IP地址&…...
APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。
公钥和 MD5 值可以通过安卓开发工具、Keytool、Jadx-GUI 等多种工具获取,最简单的就是以 appuploader为例。 1.下载 appuploader工具 ,点击此处 下载 appuploader 工具。 2.下载完成后,解压压缩包,双击 appuploder 运行。 3.运…...
屏幕提词软件Presentation Prompter mac中文版使用方法
Presentation Prompter for mac是一款屏幕提词器软件,它可以将您的Mac电脑快速变成提词器,支持编写或导入,可以在一个或多个屏幕上平滑地滚动,Presentation Prompter 下载是为适用于现场表演者,新闻广播员,…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
