在 AWS EC2 中添加 CORS 标头的位置

Posted

技术标签:

【中文标题】在 AWS EC2 中添加 CORS 标头的位置【英文标题】:Where to add CORS headers in AWS EC2 【发布时间】:2017-02-11 15:45:16 【问题描述】:

我正在从浏览器向我的 EC2 AWS 服务器发出 POST 请求,但返回以下错误。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.example.com' is therefore not allowed access. The response had HTTP status code 401.

我已经做了一些研究并发布了我需要在我的 EC2 AWS 服务器上启用 CORS - 我知道我应该添加一些类似的东西

<CORSConfiguration>
    <CORSRule>
    <AllowedOrigin>http://www.example1.com</AllowedOrigin>

    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
     <AllowedOrigin>http://www.example2.com</AllowedOrigin>

     <AllowedMethod>PUT</AllowedMethod>
     <AllowedMethod>POST</AllowedMethod>
     <AllowedMethod>DELETE</AllowedMethod>

     <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

来自 AWS 文档:AWS EC2 CORS

但是我也不确定我实际上需要在哪里添加它。我的 AWS 服务器知识有限。

这是一个 Neo4j 数据库,调用是:

getRequest = function () 
    $.ajax(
        url: 'http://exampleEC2:port/',
        type: 'POST',
        dataType: 'JSON',
        contentType: 'application/json;charset=UTF-8',
        password: 'xxxxxx',
        username: 'xxxx',
        data: dataObject,
        success: function (data) 
            console.log("success");
        ,
        error: function(error) 
            console.log(error);
        
    );
;

【问题讨论】:

【参考方案1】:

您可以将 CORS 条件添加到服务器本身上的 EC2 实例。假设这是一个 Apache EC2 实例,您可以编辑 .htaccess 文件以允许任何域或一个特定域:

Header set Access-Control-Allow-Origin "*"

Header set Access-Control-Allow-Origin "yourexternaldomain.tld"

如果我没记错的话,CORS 只能关联一个域。

我确实发现有人在 .htaccess 文件中提出了条件声明,以便允许几个不同的特定域访问:

***: Access-Control-Allow-Origin Multiple Origin Domains?

【讨论】:

【参考方案2】:

我花了几个小时来解决这个问题。试过.htaccess。试过.conf。玩弄防火墙。

最后是一行php

header('Access-Control-Allow-Origin: *');

【讨论】:

以上是关于在 AWS EC2 中添加 CORS 标头的位置的主要内容,如果未能解决你的问题,请参考以下文章

AWS API Gateway 429 响应 - 没有 CORS 标头

如何在API网关中为反向代理配置AWS EC2实例

如何获取 Rails 应用程序的 CORS 标头以访问 aws s3 存储桶?

从其他域(jquery ajax)访问托管在 aws ec2 上的 rest 服务但出现 CORS 错误

修复 AWS API 网关不存在的 CORS“对预检的响应 ...”标头并放大

创建 React App 添加 CORS 标头