玩:会话Cookie未设置。 Cookie的使用JavaScript不能读(Play: Sess

2019-10-22 22:10发布

为了发送授权令牌(应存储在数据库中)到我的服务器,我做我的.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")
}

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

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

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

如何设置我的饼干成功?

Answer 1:

为什么你不能看这个的原因是HTTPOnly用于播放的会话cookie标志设置。

你有,你可以改用几种选择:

  1. 发送codeid的JSON对象(如"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')); }, 


文章来源: Play: Session Cookie not set. Cannot read Cookie using Javascript