websocket 拒绝加载脚本socket.io

b0zn9rqh  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(123)

Refused to load the script 'https://cdn.socket.io/4.5.4/socket.io.min.js' because it violates the following Content Security Policy directive: "script-src 'self'". Note that 'script-src-elem' was not explicitly set, so 'script

<head>
    <title>Socket.IO chat</title>
    <meta http-equiv="Content-Security-Policy" content="script-src-elem 'self' https://cdn.socket.io; connect-src 'self' https://cdn.socket.io;">
  </head>

我确实在我的html的头部添加了这个,但在浏览器控制台它显示了上述错误。
我也试过这个

<head>
    <title>Socket.IO chat</title>
    <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://cdn.socket.io; connect-src 'self' https://cdn.socket.io;">
  </head>
<!DOCTYPE html>
<html>
  <head>
    <title>Socket.IO chat</title>
    <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://cdn.socket.io http://localhost:3000;">
  </head>
  <body>
    <ul id="messages"></ul>
    <form id="form" action="">
      <input id="input" autocomplete="off" /><button>Send</button>
    </form>
  </body>
  <script src="https://cdn.socket.io/4.5.4/socket.io.min.js"</script>
</html>

下面是socket.io示例的完整html

kwvwclae

kwvwclae1#

脚本导入应该在<script> </script>标记中。
HTML中的脚本导入是一件很好的事情,StackExchange可能有你正在寻找的答案:<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
问题:Socket.io client served from CDN上的“从CDN提供的Socket.io客户端”有一个可接受的答案。

第一种导入类型,HTLM中

以下是需要理解的要点,

  1. <meta> </meta>是一个在www.example.com上有足够好的描述的标签w3schools.com,如果/当你需要它的时候-用它指定你的内容类型。此socket.io脚本或/和导入可能不需要它。
  2. JavaScript是application/text,在头文件中没有任何meta标签,您将能够只使用script标签。也许可以找到最小/最丑的版本。要从cdn导入socket.io,需要<script> </script>
    对于JavaScript mins和HTML中的其他内容使用script标签,可能是index.html [但也可能是index.js或其他.html、.js、.tx、.jxt等。],stack.io将可以在HTML页面的其他<script> </script>标签中访问。
    这样你的React、Vue、Next、Gatsby等就会找到你的socket.io,如果它找不到的话,这可以揭示为什么你不需要在HTML中导入socket.io。
    不要嵌套script标签,因为不确定在支持时它会被用来做什么。

第二种导入类型,从JavaScript导入

您可以从<script> </script>标记内部执行此操作。Socker.io首页:

import { Server } from "socket.io";
<script type='module'>
import { Server } from "socket.io"; // or from something like: "https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"
</script>

package.json是用来让这个工作,一个静态构建vi框架将包括socket.io源代码。
总的来说,您遇到了一个安全问题,将脚本注入到meta标记中。

相关问题