Express 在启用CORS模块的情况下,请求的资源上不存在“Access Control Allow Origin”标头

Express 在启用CORS模块的情况下,请求的资源上不存在“Access Control Allow Origin”标头,express,cors,Express,Cors,我正试图让CORS在我的AWS Lambda服务器上使用无服务器。现在我有两个子域名api.site.co和app.site.co 在Express上的app.js文件中,我安装了CORS并启用了它,如下所示: app.use( cors({ origin: 'https://app.site.co', optionsSuccessStatus: 200, }), ); app.options('*', cors()); 然后使用React中的Axios模块,我进行以下

我正试图让CORS在我的AWS Lambda服务器上使用无服务器。现在我有两个子域名api.site.co和app.site.co

在Express上的app.js文件中,我安装了CORS并启用了它,如下所示:

app.use(
  cors({
    origin: 'https://app.site.co',
    optionsSuccessStatus: 200,
  }),
);
app.options('*', cors());
然后使用React中的Axios模块,我进行以下调用:

axios
   .post('/users/register', user)
   .then(res => history.push('/login'))
   .catch((err) => {
     dispatch({
       type: GET_ERRORS,
       error: err.response.data,
     });
   });
另外,在客户端应用程序的my app.js文件中:

axios.defaults.baseURL = 'https://api.site.co';
提交任何请求时,我收到以下错误:

Access to XMLHttpRequest at 'https://api.site.co/users/register' from origin 'https://app.site.co' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
到目前为止,我还尝试将CORS配置更改为:

app.use(cors());
app.options('*', cors());
但我还是犯了同样的错误


关于如何解决这个问题,有什么建议吗?

看起来有一个打字错误:

=>


你是在请求https://api.site.co 但您的配置指定https://app.site.co这是AWS Lambda无服务器设置的问题。我需要补充一点

functions:
  app:
    handler: app.handler
    events:
      - http:
          path: /
          method: any
          cors:
            origin: 'https://app.site.co'
      - http:
          path: '{proxy+}'
          method: any
          cors:
            origin: 'https://app.site.co'

因此,当代理到Express中间件时,它将允许CORS请求。

Hmm。请求将从客户端应用程序发送到REST API。你能解释一下你指的是什么配置吗?CORS配置?