在 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 标头的位置的主要内容,如果未能解决你的问题,请参考以下文章