我有一个tomcat服务器,在web xml我定义了cors过滤器来接受所有请求。
<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,PUT,DELETE</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在Chrome的网络检查器中,我得到报告请求成功到达,我甚至可以看到响应JSON。 network inspector screenshot
但是在控制台中我仍然收到此错误消息:
Failed to load http://localhost:8080/refactor/repair: The 'Access-Control-Allow-Origin' header has a value 'null' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
答案 0 :(得分:2)
当页面请求ajax请求,但页面本身不是通过服务器运行时,这意味着它没有http协议,那么它也没有origin
。但是,对于接收设置Access-Control-Allow-Origin
标头的ajax请求的服务器,这是必需的。
使用简单的http服务器,例如python随附的那个,可以轻松解决。
对于使用 python 2 的 windows 用户:
py -m SimpleHTTPServer <SOME_PORT>
对于使用 python 3 的 windows 用户:
py -m http.server <SOME_PORT>
对于 mac / linux python 2 的用户:
python -m SimpleHTTPServer <SOME_PORT>
对于 mac / linux python 3 的用户:
python -m http.server <SOME_PORT>
# or the binary might be python3:
python3 -m http.server <SOME_PORT>