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

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

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

通过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]删除
最新教程 更多>
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-07-02
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-07-02
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-07-02
  • 如何从PHP中的数组中提取随机元素?
    如何从PHP中的数组中提取随机元素?
    从阵列中的随机选择,可以轻松从数组中获取随机项目。考虑以下数组:; 从此数组中检索一个随机项目,利用array_rand( array_rand()函数从数组返回一个随机键。通过将$项目数组索引使用此键,我们可以从数组中访问一个随机元素。这种方法为选择随机项目提供了一种直接且可靠的方法。
    编程 发布于2025-07-02
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-07-02
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-07-02
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-07-02
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,可以更快地搜索这些前缀。了解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-07-02
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-07-02
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-07-02
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-07-02
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-07-02
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-07-02
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-07-02
  • Python中嵌套函数与闭包的区别是什么
    Python中嵌套函数与闭包的区别是什么
    嵌套函数与python 在python中的嵌套函数不被考虑闭合,因为它们不符合以下要求:不访问局部范围scliables to incling scliables在封装范围外执行范围的局部范围。 make_printer(msg): DEF打印机(): 打印(味精) ...
    编程 发布于2025-07-02

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

Copyright© 2022 湘ICP备2022001581号-3