我提交從我的本地POST請求時收到以下錯誤 -彈性魔豆CORS的配置POST請求
XMLHttpRequest cannot load http://sample-env.elasticbeanstalk.com/resource
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8080' is therefore not allowed access
但是,在我的S3實例的CORS配置編輯器,我有以下幾點 -
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
我已經與這三條線玩耍了,但我仍然無法診斷問題。
<AllowedOrigin>*</AllowedOrigin>
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
我的開發者控制檯顯示如下頭,這讓我覺得這個CORS配置甚至不被讀取 -
HTTP/1.1 200 OK
Date: Fri, 21 Apr 2017 02:48:01 GMT
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Content-Length: 0
Keep-Alive: timeout=60, max=98
Connection: Keep-Alive
Content-Type: text/plain
有誰看到什麼毛病我的配置還是有別的東西,必須添加?我能夠將CORS過濾器添加到我的tomcat的web.xml中,並且一切正常,所以我認爲我正確配置了我的彈性beanstalk。
編輯
添加了以下config文件(前身,.yaml)
add_cors.config.config
files:
"/etc/httpd/conf.d/cors.conf" :
mode: "000644"
owner: root
group: root
content: |
<Location "/">
Header set Access-Control-Allow-Origin: *
Header set Access-Control-Allow-Methods: "POST, GET, PUT, DELETE, OPTIONS"
Header add Access-Control-Allow-Headers: "Authorization, Content-Type, Accept"
Header set Access-Control-Allow-Credentials: true
SetOutputFilter DEFLATE
</Location>
它是在爆炸戰爭這個位置 -
.
├── app.war
├── .ebextensions
│ ├── add_cors.config.yaml
├── META-INF
│ ├── …
└── WEB-INF
├── classes
│ └── …
├── servlet.xml
├── lib
│ ├── …
└── web.xml
我重新部署了這場戰爭,但我仍然有同樣的錯誤 - 「不」Acc ESS-控制允許來源標頭是本」
SOLUTION
否.ebextensions文件是必要的。我只是需要在CORS篩選器添加到web.xml就像我在我的tomcat的conf/web.xml中有
<!-- ================== CORS FILTERS ===================== -->
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
感謝。我嘗試添加一個cors配置文件,但我仍然遇到同樣的問題。 –
嘗試按照文檔將文件擴展名更改爲.config(刪除.yaml): http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html 然後重新部署。 –
另外,請仔細檢查yaml文件中的縮進。看起來它基於上面粘貼的內容缺少了很多縮進。 –