Güncelleştirme
Kepçeler 3.2.1 CORS'yi desteklemek için dahili bir özelliğe sahiptir. dışarı bu kontrol http://docs.grails.org/latest/guide/introduction.html#whatsNewCors
Sadece etkinleştirmek için application.yml
bu eklemek o
grails:
cors:
enabled: true
Orijinal Kaydı (Eğer CORS'yi etkinleştirmek istediğiniz ortamı için bak emin olun) CORS'i etkinleştirmek için eklentiye ihtiyacınız yoktur (bu eklentiyi kullanmak istemiyorsanız). Eh, senin dinlenme uç noktaları için, her zaman aşağıda gibi Grails önleyicilerin kullanarak CORS'yi etkinleştirebilirsiniz:
class CorsInterceptor {
CorsInterceptor() {
matchAll()
}
boolean before() {
if (request.method == "OPTIONS") {
response.setHeader("Access-Control-Allow-Origin", "http://localhost:4200")
response.setHeader("Access-Control-Allow-Credentials", "true")
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
response.setHeader("Access-Control-Max-Age", "3600")
response.status = 200
}
return true
}
boolean after() { true }
}
Ama Grails interceptor Bahar Güvenlik çekirdek/geri kalanı tarafından eklentileri onların önleyicilerin öncelik beri sağlanan son noktalarını müdahale edemez vardır Grails önleyicilerinden daha yüksek. Bu nedenle önce bir müşteri filtresi eklemeniz ve ardından Yay ile ilgili filtrelerden önce kaydetmeniz gerekir. Şimdi
beans = {
corsFilterFoo(CorsFilter)
}
(Bootstrap.groovy
olarak) güvenlik içeriği filtresi önce Spring'in filtre zincirine eklemek:
package test
import org.springframework.web.filter.OncePerRequestFilter
import javax.servlet.FilterChain
import javax.servlet.ServletException
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
class CorsFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse resp, FilterChain chain)
throws ServletException, IOException {
if (req.getMethod() == "OPTIONS") {
resp.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
resp.addHeader("Access-Control-Max-Age", "3600")
resp.addHeader("Access-Control-Allow-Origin", "http://localhost:4200")
resp.addHeader("Access-Control-Allow-Credentials", "true")
resp.status = 200
} else {
chain.doFilter(req, resp)
}
}
}
resources.groovy
üzerine Kayıt:
src/main/groovy
bir dosyayı ekleme
SpringSecurityUtils.clientRegisterFilter("corsFilterFoo",
SecurityFilterPosition.SECURITY_CONTEXT_FILTER.order - 1)
Referanslar: https://github.com/grails-plugins/grails-spring-security-core/blob/v3.1.1/src/main/groovy/grails/plugin/springsecurity/SpringSecurityUtils.groovy#L698
Hey! Grails 3.2.1 yeni çıktı. Bu CORS http://docs.grails.org/latest/guide/introduction.html#whatsNewCors –