在 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 标头
如何获取 Rails 应用程序的 CORS 标头以访问 aws s3 存储桶?
从其他域(jquery ajax)访问托管在 aws ec2 上的 rest 服务但出现 CORS 错误