chrome不允许本地主机来源
Posted
技术标签:
【中文标题】chrome不允许本地主机来源【英文标题】:chrome not allowing localhost origin 【发布时间】:2018-08-28 15:40:13 【问题描述】:我有一个 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 中打开我的网页,它工作正常
【问题讨论】:
在/etc/hosts
文件中将域(类似于project-name.dev
)设置为127.0.0.1
是否有帮助?或者 c:\Windows\System32\Drivers\etc\hosts
如果您是 Windows 用户。
感谢回复,尝试了您的解决方案,但没有效果
抱歉,不知道我是怎么错过的,你是对的 - 不知道为什么!
这是一个文件,用于添加一些信息,直到最近我在我的机器上安装了 android studio 时,cors 过滤器才能正常工作,不知道它是否以某种方式连接。
好吧,通过 npm 的一些最小的 http 服务器包进行了尝试,它可以工作!非常感谢你:)
【参考方案1】:
当一个页面请求一个ajax请求,但页面本身没有通过服务器运行,这意味着它没有http协议,那么它也不会有origin
。这对于接收 ajax 请求的服务器设置 Access-Control-Allow-Origin
标头是强制性的。
通过使用简单的 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>
【讨论】:
以上是关于chrome不允许本地主机来源的主要内容,如果未能解决你的问题,请参考以下文章