AWS 弹性豆茎上的 CORS

Posted

技术标签:

【中文标题】AWS 弹性豆茎上的 CORS【英文标题】:CORS on AWS Elastic beanstalk 【发布时间】:2019-04-21 15:26:39 【问题描述】:

我是 AWS 新手并使用过

Elastic beanstalk 在节点中部署我的 REST API (api.example.com) 和 S3 存储桶cloudfront 用于我在 React 中的静态网站 (example.com)。

从网站调用 API 端点时,浏览器出现 CORS 错误。我该如何预防呢?

我在 CORS 的节点项目中使用以下代码

app.use((req, res, next) => 
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Credentials', true)
  res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
  next();
);

编辑 - 基于 arudzinska 的评论

我也在bucket中配置了CORS

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>

并且服务器在 nginx

提前感谢您的帮助

P.S - 另外,我看到很少有帖子给出原因,因为项目代码中会有一些错误,但所有端点都在 POSTMAN 上正常工作。

【问题讨论】:

您是否也在您的存储桶上配置了 CORS? 是的,我在桶里做了,请查看更新后的问题 @Aman 找到解决方案了吗? 请检查我的回答@ZeferiniX 【参考方案1】:

我已将 AWS 中的 CORS 配置更新为并且可以正常工作

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://localhost:3000</AllowedOrigin>
    <AllowedOrigin>https://example.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

【讨论】:

我遇到了同样的问题。我在哪里可以找到这个文件? @RZKY 转到 S3 -> 您的存储桶 -> 权限 -> CORS 配置 都不适合我,尝试添加配置并添加 app.use(cors())

以上是关于AWS 弹性豆茎上的 CORS的主要内容,如果未能解决你的问题,请参考以下文章

如何在弹性豆茎上更新 python Flask 应用程序?

弹性豆茎上的 wurfl

在弹性豆茎上创建环境时出现 502

弹性豆茎上的 mod_cloudflare

云形成的弹性豆茎上的 SSL 证书

无法在弹性豆茎上加载带有瓶子的静态文件