我正在尝试为我的REST端点实现https://github.com/jamesward/play-rest-security。
我使用Scala Play result.withCookies(Cookie(AUTH_TOKEN, authToken))
设置我的实现的返回结果。
但是,在客户端(js),当我尝试使用document.cookie
进行访问时。找不到cookie。
使用response().setCookie(AUTH_TOKEN, authToken)
的Java API似乎有所不同。可通过document.cookie
访问。
我在这里缺少什么?
答案 0 :(得分:3)
httpOnly
可能会application.conf
设置为true(默认设置为默认值)。这意味着您无法在客户端的JavaScript中读取Cookie。
将session.httpOnly=false
放入application.conf
。
答案 1 :(得分:1)
默认情况下,Play会在其Cookie上设置HttpOnly
标记,因此无法通过客户端代码(js)访问它们。来自Google:
HttpOnly是Set-Cookie HTTP响应头中包含的附加标志。生成cookie时使用HttpOnly标志有助于降低客户端脚本访问受保护cookie的风险(如果浏览器支持它)。
请参阅here了解关闭此功能的方法。 Particualarly:
所以,播放1你可以设置application.session.httpOnly = false但是在Play 2.1中他们改为session.httpOnly = false
我相信应该在你的application.conf中设置。希望有所帮助。
答案 2 :(得分:0)
这在Play 2.5.x中对我有用,其中涉及application.conf
的其他答案都没有。
Cookie(AUTH_TOKEN, authToken, httpOnly = false)
这可能是因为application.sesssion
仅处理sesssion cookie。例如,对于国际化cookie,您必须修改play.i18n.langCookieHttpOnly
,依此类推。
另一方面,上述解决方案单独处理cookie。