Skip to content

Vercel 配置跨域

1. 安装依赖

bash
npm install http-proxy-middleware

2. 创建配置文件

在项目根目录下创建 vercel.json 文件,配置路由重写规则:

json
{
  "rewrites": [
    {
      "source": "/douyin/(.*)",
      "destination": "/api/proxy"
    }
  ]
}

其中 source 是匹配的路径,destination 是重定向的路径,这里重定向到 /api/proxy, 这个路径就是我们在根目录下创建的 api/proxy.js 文件。

以下是一个用于解决跨域问题的 Vercel function,使用了 http-proxy-middleware 库。

javascript
import { createProxyMiddleware } from 'http-proxy-middleware'

export default async function handler(req, res) {
  // 判断请求路径是否以 '/douyin' 开头,设置代理目标
  const target = req.url.startsWith('/douyin') ? 'https://www.douyin.com' : ''

  if (target) {
    // 设置 CORS 头
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.setHeader(
      'Access-Control-Allow-Methods',
      'GET,HEAD,PUT,PATCH,POST,DELETE'
    )
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type')

    // 创建代理并等待完成
    await new Promise(resolve => {
      createProxyMiddleware({
        target,
        changeOrigin: true,
        pathRewrite: {
          '^/douyin/': '/'
        }
      })(req, res, resolve)
    })
  } else {
    // 如果没有找到匹配的路径,返回 404
    res.statusCode = 404
    res.end('Not Found')
  }
}

通过以上步骤,你可以成功部署前端项目到 Vercel 并解决跨域问题。请根据实际情况调整路径和配置。