Chrome 13.x CORS (Cross-Origin Resource Sharing) issue 0
Recently, I had a problem with Chrome browser using the CORS (Cross-Origin Resource Sharing).
We are using Jetty server on the server side.
To allow cross-domain http request we using org.eclipse.jetty.servlets.CrossOriginFilter filter.
HTTP POST request led to the exclusion of Chrome 13.x browser: Origin *** is not allowed by Access-Control-Allow-Origin ….
This problem was very strange because on the other browsers (FireFox, Safari) everything works fine.
We spend a lot of time before found that Chrome send the additional parameter in the header Access-Control-Allow-Headers field: Origin.
So, to solve this issue, need to add parameter for the filter like shown below:
<filter> <filter-name>cross-origin</filter-name> <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> <init-param> <param-name>allowedHeaders</param-name> <param-value>X-Requested-With,Origin,Content-Type, Accept</param-value> </init-param> </filter> <filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/cometd/*</url-pattern> </filter-mapping>
because default value of allowedHeaders is X-Requested-With.
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
Or it could be like this:
That’s it.
Good luck with CORS!
Helpful information:
http://wiki.eclipse.org/Jetty/Feature/Cross_Origin_Filter
https://developer.mozilla.org/en/HTTP_access_control
https://developer.mozilla.org/En/Server-Side_Access_Control

