玩框架,你如何在客户端(javascript)访问cookie?

时间:2015-08-11 15:21:03

标签: java scala cookies playframework

我正在尝试为我的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访问。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

httpOnly可能会application.conf设置为true(默认设置为默认值)。这意味着您无法在客户端的JavaScript中读取Cookie。 将session.httpOnly=false放入application.conf

但请考虑security implications

答案 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。