首页 > 解决方案 > Access-Control-Allow-Methods 在预检响应中不允许方法 PUT。Firebase 云函数

问题描述

我有一个 Firebase 云函数端点,它将 PUT 请求转发到另一个 API 端点。我确实设置了这些Access-Control-Allow-标题:

// src/middlewares/enableCORS.ts
export default function enableCORS(
  fn: (req: https.Request, res: e.Response) => Promise<void>
) {
  return async (req: https.Request, res: e.Response) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', '*');
    res.header(
      'Access-Control-Allow-Methods',
      'GET, POST, PUT, DELETE, OPTIONS'
    );
    res.header('Access-Control-Max-Age', '86400');

    if (req.method === 'OPTIONS') {
      res.end();

      return;
    }

    await fn(req, res);
  };
}
// src/index.ts
import enableCORS from './middlewares/enableCORS'

export const my_endpoint = https.onRequest(
  enableCORS(async (request, response) => {
    // Forward request
  })
);

但是我来自浏览器的请求仍然被 CORS 阻止。请帮忙。

标签: typescriptexpressgoogle-cloud-functions

解决方案


回答我自己的问题:

我通过使用 esbuild 将分离的文件捆绑到单个 index.js 文件中解决了这个问题。


推荐阅读