我在S3(app.foo.org)上有一个客户端静态网站,向在Elastic Beanstalk(www.foo.org)上运行的Web应用程序发送http请求。
S3 Web应用程序配置为:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
在S3应用程序中,我为CORS设置了http标头。 在服务器上,我将响应标头设置如下:
httpResponse.setHeader("Access-Control-Allow-Origin", "*");
httpResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
httpResponse.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
一切都运行良好,但是在S3上通过&#34; aws async&#34;上传新版本的静态网站时命令,它停止工作!我收到以下错误:
XMLHttpRequest cannot load http://www.foo.org/rest/...
否&#39;访问控制 - 允许 - 来源&#39;标头出现在请求的资源上。起源&#39; http://app.foo.org&#39;因此不允许访问。响应的HTTP状态代码为500。
I tried changing the CORSRules: for instance to replace:
<AllowedOrigin>*</AllowedOrigin>
with:
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
我尝试了许多其他的建议,我找不到......没有任何作用......任何想法可能出错?
答案 0 :(得分:2)
我发现了这个错误!
客户端正在发送http请求,而在服务器端,我将所有即将到来的http://www.foo.org请求转换为https://www.foo.org并将其发回,并期望客户端向我发送https请求。
所以我只是设置客户端发送https请求,现在一切正常!