【发布时间】:2012-04-17 12:38:45
【问题描述】:
我正在尝试在 grails 中设置 CORS 支持,并且我正在使用以下过滤器:
class CorsFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
response.setHeader("Access-Control-Allow-Origin", "*")
}
}
}
}
从测试来看,似乎所有请求的响应标头都已正确设置,但是当我从外部向本地主机或某些可用的服务器发出请求时,我收到以下错误:
XMLHttpRequest cannot load http://server:8080. Origin http://jsbin.com is not allowed by Access-Control-Allow-Origin.
This live example 在我的 Chrome 实例中工作,所以我不知道这里会发生什么。在失败的请求中,我试图直接打tomcat。
可能会发生什么导致此操作失败?
【问题讨论】:
-
我想到了两件事。 1.使用localhost(一级域)不是一个好主意;我现在找不到源,但不久前我遇到了麻烦。使用您的主机文件来设置一个假主机。 2. JSBin 中的代码实际上是您用于请求的代码吗?如果没有,一些 JS 库/框架可能会首先发送一个 OPTIONS(预飞行)请求,您需要适当地响应。确认是否是这种情况并且我可以提供响应,我已经在 Grails 中开发了一个解决方案。祝你好运!
标签: javascript ajax grails groovy cors