1

我正在尝试发布并获取 cookie。我是新手,这对我来说是一个学习项目。我的印象是,如果您使用“set-cookie”,应该能够在 .toSource 中看到额外的“set-cookie”。(如果这会有所不同,我会尝试在 Google Apps 网站上完成此操作。)我错过了什么吗?这是我的代码:

 function setGetCookies() {

  var payload = {'set-cookie' : 'test'};
  var opt2 = {'headers':payload, "method":"post"};

  UrlFetchApp.fetch("https://sites.google.com/a/example.com/blacksmith", opt2);
  var response = UrlFetchApp.fetch("https://sites.google.com/a/example.com/blacksmith")

  var openId = response.getAllHeaders().toSource();
  Logger.log(openId)      

  var AllHeaders =  response.getAllHeaders();
  for (var prop in AllHeaders) {
    if (prop.toLowerCase() == "set-cookie") {
      // if there's only one cookie, convert it into an array:
      var myArray = [];
      if ( Array.isArray(AllHeaders[prop]) ) {
        myArray=AllHeaders[prop];
      } else {
        myArray[0]=AllHeaders[prop];
      }
      // now process the cookies
      myArray.forEach(function(cookie) {  
         Logger.log(cookie);
      });
      break;
    }
  }

}

提前致谢!我引用它来开发代码:Google Apps 脚本中的 Cookie 处理 - 如何在标头中发送 cookie?

接受任何建议。

4

2 回答 2

1

当您未登录时,Google 协作平台不会在响应中设置任何 cookie。UrlFetchApp 不会传递您的 Google cookie,因此它的行为就像您已注销一样。

于 2012-06-18T18:44:14.497 回答
0

首先,您要发送的名称为“test”的 cookie 没有值。你应该发送'test=somevalue'。

其次,我想知道您是否正在尝试将 cookie 发送到 googlesite 服务器并要求它使用您之前发送的相同 cookie 进行回复...?

我认为您正在尝试充当 HTTP 服务器,而您是 HTTP 客户端。作为 HTTP 客户端,您的角色只是发回 HTTP 服务器之前发送给您的任何 cookie(尊重域、到期...参数)。

于 2012-06-19T08:29:00.367 回答