我有一个Jersey REST界面,我想在每个请求的响应中发送cookie,但任何响应都不会出现cookie。
我觉得这是一个CORS问题,我不确定我需要哪些CORSResponseFilter配置才能设置cookie并在响应中成功发送。
我的项目是在Kotlin下用SpringBoot构建的。
回复代码:
@POST
fun put(): Response {
val cookie = NewCookie(Cookie("RESERVATION", "TEST"),
"Session", 60 * 60, false)
return ok()
.cookie(cookie)
.entity(Result("OK", "Success"))
.build()
}
过滤代码:
open class CORSResponseFilter : ContainerResponseFilter {
override fun filter(req: ContainerRequestContext?, res: ContainerResponseContext?) {
res?.headers?.add("Access-Control-Allow-Origin", "*")
res?.headers?.add("Access-Control-Allow-Methods", "POST, GET")
res?.headers?.add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
res?.headers?.add("Access-Control-Expose-Headers", "Set-Cookie")
res?.headers?.add("Access-Control-Allow-Credentials", "true")
}
}
请求成功,响应按预期发送,但都没有任何cookie。在设置响应过滤器之前,我能够在每个响应中收到cookie。
感谢任何帮助。