chrome不允许本地主机来源

时间:2018-03-19 23:04:56

标签: java google-chrome tomcat cors

我有一个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.

编辑:只是尝试在Internet Explorer中打开我的网页,并且工作正常

1 个答案:

答案 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>