Grags 3在tomcat下战争,角度2在nginx下运行
我使用的是grails 3.2.0.M2。我使用了默认控制器来使用其余的配置文件,所以基本上所有的代码都在UrlMappings.groovy文件中。
这是拦截器代码
package heroes2
class HeroInterceptor {
boolean before() {
// header( "Access-Control-Allow-Origin", "http://localhost:8081" )
response.setHeader("Access-Control-Allow-Origin", "*")
// response.setHeader("Access-Control-Allow-Origin", "http://centos7-ansible")
if (request.method == "OPTIONS") {
response.setHeader("Access-Control-Allow-Origin", "*")
// response.setHeader("Access-Control-Allow-Origin", "http://centos7-ansible")
response.setHeader("Access-Control-Allow-Credentials", "true")
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE")
response.setHeader("Access-Control-Max-Age", "3600")
response.status = 200
}
true
}
没有拦截器我在GET上遇到CORS错误。现在,GET现在检索代码。但POST,PUT和DELETE操作仍然在浏览器控制台中显示CORS错误。
我是否需要对插件的grails代码进行其他更改以涵盖GET以外的操作?
答案 0 :(得分:0)
我在8889端口上有一个gulp服务器用于角度,下面的拦截器适用于带有GRAILS 3.1.6的ApiController。
class ApiInterceptor {
ApiInterceptor() {
matchAll()
}
boolean before() {
println " Interceptor calling..."
header( "Access-Control-Allow-Origin", "http://localhost:8889" )
boolean options = ("OPTIONS" == request.method)
if (options) {
println " OPTIONS case..."
header( "Access-Control-Allow-Origin", "http://localhost:8889" )
header( "Access-Control-Allow-Credentials", "true" )
header( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT")
header( "Access-Control-Max-Age", "3600" )
response.status = 200
}
true
}
boolean after() { true }
}
我建议使用不带*但带有localhost:yourport
的URL开始一些测试,并在拦截器中插入一些println来检查是否正确输入了option-branch-if。