java - chrome 不允许 localhost 来源

标签 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

但在控制台中我仍然收到此错误消息: 无法加载 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 2windows 用户:

py -m SimpleHTTPServer <SOME_PORT>

对于使用 python 3windows 用户:

py -m http.server <SOME_PORT>

对于使用 python 2ma​​c/linux 用户:

python -m SimpleHTTPServer <SOME_PORT>

对于使用 python 3ma​​c/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/

相关文章:

google-chrome - 在Chrome中禁用: Active Resource Loading Per-Frame Limit

apache - 在提供页面后,HTTP 套接字连接仍处于 TIME_WAIT 状态

java - 必须启动 Instrumentation LoadTimeWeaver/openjdk 11

java - 使用 Play Framework 调用带有日期的 Controller 方法

java - 如何在Java 3D API中将不同的图像设置为3D立方体的面/边?

jquery - 工具提示器无法正常工作

angularjs - 在 tomcat apache 服务器上部署 AngularJS 应用程序

java - 关闭 Jena QueryEngineHTTP 而不关闭 ResultSet

java - 使用 Jung 的 SpringLayout 放置节点的速度

html - 在perl中刷新没有 "Confirm Form Resubmission"的浏览器