它再次出现CORS问题。 [*我对CORS知之甚少]
我的环境:
我将json文件存储在Amazon S3服务器中,并从我的Web应用程序中读取此json文件。
我的问题:
我只在FireFox中获得此功能
阻止跨源请求:同源策略禁止读取 服务器上的远程资源。 (原因:CORS标题 'access-Control-Allow-Origin'缺失)
注意:我已经在服务器[Amazon S3]中配置了 CORSRule ,之后Chrome和其他浏览器正常运行。但是FireFox给出了这个错误。
在FireFox网络标签中[检查元素]:
状态:403
方法:选项
原因:xhr
输入:xml
请求标题:
Host: myWebApp.net
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/plain, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
X-Requested-With: XMLHttpRequest
Referer: https://myWebApp.net/page.jsp
Connection: keep-alive
响应标题:
Content-Length: 0
Date: Thu, 24 Nov 2016 07:27:30 GMT
Location: https://webApp.s3.amazonaws.com/file.json
Server: Apache-Coyote/1.1
我环顾四周但没有找到任何原因。 所以我需要你的帮助。 由于它在Chrome浏览器中正常运行,因此仅在FireFox中出现问题。
请尽可能逐步描述[*我对这件事情不熟悉]
谢谢!
答案 0 :(得分:0)
哎呀! 终于得到了解决方案。
问题发生在Amazon S3&#39> CORSConfiguration
我对此并不了解,但现在它允许来自所有浏览器的Cross-Origin。
我将 CORSConfiguration 更改为:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://myWebApp.net</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
</CORSRule>
</CORSConfiguration>
根据此规则,浏览器会获得正确的 请求标头 和 响应标头 。
请求标题:
Host: myWebApp.s3.amazonaws.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-requested-with
origin: https://myWebApp.net
Connection: keep-alive
Cache-Control: max-age=0
响应标题:
Access-Control-Allow-Headers: x-requested-with
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Origin: https://myWebApp.net
Access-Control-Max-Age: 3000
Content-Length: 0
Date: Thu, 24 Nov 2016 13:21:17 GMT
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
access-control-allow-credentials: true
access-control-expose-headers: x-amz-server-side-encryption, x-amz-request-id, x-amz-id-2
x-amz-id-2: emYYMILNIdkCejpjuDXz4Haks87asdhj/7JL5AASt/8eIwKdgO1Gb/AzGRg7SU/GH55IVopScg=
x-amz-request-id: 307572CDFF39F443