我有一个 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
但在控制台中我仍然收到此错误消息:
无法加载 http://localhost:8080/refactor/repair:“Access-Control-Allow-Origin” header 的值“null”不等于提供的来源。因此不允许访问 Origin 'null'。
编辑:刚刚尝试在 Internet Explorer 中打开我的网页,它工作正常
最佳答案
当页面请求 ajax 请求,但页面本身不通过服务器运行时,这意味着它没有 http 协议(protocol),那么它也不会有 origin
。尽管对于接收 ajax 请求的服务器设置 Access-Control-Allow-Origin
header ,这是强制性的。
通过使用一个简单的 http 服务器,例如python自带的,这可以轻松解决。
对于使用 python 2 的 windows 用户:
py -m SimpleHTTPServer <SOME_PORT>
对于使用 python 3 的 windows 用户:
py -m http.server <SOME_PORT>
对于使用 python 2 的 mac/linux 用户:
python -m SimpleHTTPServer <SOME_PORT>
对于使用 python 3 的 mac/linux 用户:
python -m http.server <SOME_PORT>
# or the binary might be python3:
python3 -m http.server <SOME_PORT>
关于java - chrome 不允许 localhost 来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373805/