”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 修补您的 Discord 活动的网络请求,以实现顺利的 CSP 合规性

修补您的 Discord 活动的网络请求,以实现顺利的 CSP 合规性

发布于2024-11-02
浏览:571

通过Discord运行Discord活动时,您可能会遇到内容安全策略(CSP)问题。您可以通过确保网络请求遵循 Discord 代理 规则来修复这些问题。

这可以手动完成...或者你可以让@robojs/patch处理它。

什么是CSP?

Patch Your Discord Activity’s Network Requests for Smooth CSP Compliance

内容安全策略 (CSP) 是一种安全标准,有助于防止 跨站脚本 (XSS) 攻击。它控制页面可以加载哪些资源以及可以向何处发送数据。

当您在 Discord 中运行 Discord 活动 时,您实际上是在使用 Discord 代理 作为中间人,这意味着它设置了自己的 CSP 规则。如果您的网络请求不遵守这些规则,它们将被阻止。

  • 除非以 /.proxy 为前缀,否则像 /api/token 这样的相对请求将被阻止。
  • 像 https://example.com/api/token 这样的外部请求将被阻止,除非它们被映射代理

解决 CSP 违规问题

如上所述,您所要做的就是确保您的网络请求遵循 Discord 代理 规则。在某些情况下,这包括将 /.proxy 添加到请求路径的开头。

// Before
fetch('/api/token')

// After
fetch('/.proxy/api/token')

然而,WebSockets 可能有点棘手。特别是当依赖热模块替换(HMR)时,它会在您自己的活动之前加载,如Vite。因此,我们创建了 @robojs/patch 来为您处理一切。

修补你的活动

@robojs/patch 是一个轻量级软件包,可以修补您的网络请求以遵循 Discord 代理 规则。它通过更新 fetchWebSocket 全局变量来工作。

npm install @robojs/patch

根据您的项目设置,我们有不同的方法来应用此补丁。

方式一:Vite插件(推荐)

如果您使用Vite,您可以将补丁作为插件应用到您的Vite配置文件中。

import { DiscordProxy } from '@robojs/patch'
import { defineConfig } from 'vite'

export default defineConfig({
    plugins: [DiscordProxy.Vite()]
})

我们推荐此方法,因为它允许补丁在Vite的HMR客户端之前运行,确保其正常工作。

方法二:函数调用

如果您没有使用Vite,您可以直接调用函数来应用补丁。

import { DiscordProxy } from '@robojs/patch'

DiscordProxy.patch()

请务必在项目开始时、加载其他脚本之前调用此函数。 (例如,index.js 文件的顶部)

➞? 文档: @robojs/patch

外部请求

这不会影响对外部 URL 发出的请求。如果您遇到CSP问题,您可以通过创建您自己的代理或在Discord开发者门户中映射它们来解决这些问题。

➞? 教程: 使用代理解决 CSP 问题

对 Discord 活动感兴趣?

Patch Your Discord Activity’s Network Requests for Smooth CSP Compliance

Robo.js 是一个强大的框架,用于轻松构建 Discord 活动。它提供了广泛的功能和工具来帮助您创建史诗般的 Discord 体验!

加入我们的Discord Server与其他开发人员聊天、提出问题并分享您的项目。我们是一群友好的人,总是很乐意提供帮助!另外,我们自己的人工智能机器人,Sage,可以帮助您解决任何问题。

➞? 社区:加入我们的 Discord 服务器

➞? 教程: 使用 Robo.js 在几秒钟内创建一个 Discord 活动

机器人 - 想象魔法

通过轻松的活动、机器人、服务器等来增强 Discord! ⚡ | 83 名会员

Patch Your Discord Activity’s Network Requests for Smooth CSP Compliance 不和谐网站
版本声明 本文转载于:https://dev.to/waveplay/patch-your-discord-activitys-network-requests-for-smooth-csp-compliance-432c?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-05-16
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-05-16
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-05-16
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-05-16
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass...
    编程 发布于2025-05-16
  • Python不会对超范围子串切片报错的原因
    Python不会对超范围子串切片报错的原因
    在python中用索引切片范围:二重性和空序列索引单个元素不同,该元素会引起错误,切片在序列的边界之外没有。这种行为源于索引和切片之间的基本差异。索引一个序列,例如“示例” [3],返回一个项目。但是,切片序列(例如“示例” [3:4])返回项目的子序列。索引不存在的元素时,例如“示例” [9] ...
    编程 发布于2025-05-16
  • 编译器报错“usr/bin/ld: cannot find -l”解决方法
    编译器报错“usr/bin/ld: cannot find -l”解决方法
    错误:“ usr/bin/ld:找不到-l “ 此错误表明链接器在链接您的可执行文件时无法找到指定的库。为了解决此问题,我们将深入研究如何指定库路径并将链接引导到正确位置的详细信息。添加库搜索路径的一个可能的原因是,此错误是您的makefile中缺少库搜索路径。要解决它,您可以在链接器命令中添加...
    编程 发布于2025-05-16
  • PHP未来:适应与创新
    PHP未来:适应与创新
    PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-05-16
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能显示图像时未能显示图像时遇到了一个问题。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-05-16
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-05-16
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-05-16
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-05-16
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-05-16
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-05-16
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-05-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3