【问题标题】:Play: Session Cookie not set. Cannot read Cookie using Javascript播放:未设置会话 Cookie。无法使用 Javascript 读取 Cookie
【发布时间】:2015-05-02 19:51:57
【问题描述】:

为了将授权令牌(应该存储在数据库中)发送到我的服务器,我在 .scala.html 文件中进行了 AJAX 调用。

$.ajax({
       url: "http://localhost:9000/storeauthcode",
       type: 'get',
       data: {code: authResult['code']},
       contentType: 'application/json',
       dataType: 'json',
       success: function(result) {
       // Handle or verify the server response.
           console.log("you're fully logged in now.")
           console.log(JSON.stringify(result, null, 2))
           console.log("document.cookie = "+document.cookie)
       },
       error: function (xhr, status, error) {
           console.log("error\n")
           console.log(xhr.responseText)
       }

   });
  }

在服务器端,我存储验证码并返回一个 json 响应

  def storeAuthCode  = Action { request =>
  //store credentials in database
  //...
  //return some data
  Ok(Json.toJson(Map("a"->"b"))).withSession("code"-> "someAuthCode", "id"->"someId")
}

如果我尝试通过 AJAX 调用的成功处理程序打印所有 cookie

console.log("document.cookie = "+document.cookie)

document.cookie 似乎是空的,尽管服务器应该已经创建了一个会话 Cookie(或至少任何东西)。 document.cookie 应该返回一个“;”我的 Cookie 值的分隔列表。

如何才能成功设置我的 Cookie?

【问题讨论】:

    标签: ajax scala session cookies playframework


    【解决方案1】:

    您无法阅读此内容的原因是为 Play 的会话 cookie 设置了 HTTPOnly 标志。

    您可以使用几个选项:

    1. 在 JSON 对象中发送 codeid(如 "a"->"b"
    2. 您也可以将它们发送为response headers,这样您就可以在成功回调中获取它们,例如:

      Ok(Json.toJson(Map("a" -> "b")))
        .withHeaders(
          "code" -> "foo",
          "id" -> "bar"
        )
        .withCookies(
          Cookie("code", "foo"),
          Cookie("id", "bar")
        )
      

      jQuery

      success: function(data, textStatus, jqXHR) {
          console.log(jqXHR.getResponseHeader('code'));
          console.log(jqXHR.getResponseHeader('id'));
      },
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-18
      • 2016-05-26
      • 2010-10-17
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      相关资源
      最近更新 更多