NodeJS 如何在nextjs中隐藏特定子域中的脚本

vjrehmav  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(104)

在_document页面,我有一个聊天窗口的脚本,我需要隐藏任何子域中的脚本,
示例:
domain.com>> allow脚本,
*.domain.com>> disallow脚本
*.domain.com/*>> disallow脚本

import { Html, Head, Main, NextScript } from 'next/document'
const Document = () => {
  return (
    <Html lang="en">
      <Head>
        <script src="//code.jivosite.com/widget/id" async></script> // this is the script
      </Head>
      <body>
        <Main />
        <NextScript />
      </body>
    </Html>
  )
}
export default Document;
mgdq6dx1

mgdq6dx11#

我刚刚通过检查host值来确定它是一个域还是一个子域,然后将结果传递给Document的props来解决这个问题。

import { Html, Head, Main, NextScript } from 'next/document'
import NextDocument from "next/document"
import { domain } from '@/config/constants';

const Document = ({ isSubDomain }: any) => {

  return (
    <Html lang="en">
      <Head>
        {!isSubDomain && <script src="//code.jivosite.com/widget/id" async></script>}
      </Head>
      <body>
        <Main />
        <NextScript />
      </body>
    </Html>
  )
}

Document.getInitialProps = async (ctx: any) => {
  const initialProps = await NextDocument.getInitialProps(ctx);
  let isSubDomain = ctx?.req?.headers?.host?.replace(`.${domain}`, "") ? true : false
  return { ...initialProps, isSubDomain };
};

export default Document;

相关问题