【问题标题】:How to set cookies with yaws如何使用 yaws 设置 cookie
【发布时间】:2012-02-29 00:43:51
【问题描述】:

是否有类似php setcookie 的功能。如果不是那怎么办?

已编辑:

yaws_api:setcookie("lang","lang_value", "/"),
yaws_api:find_cookie_val("lang", (A#arg.headers)#headers.cookie),

find_cookie_val 返回空字符串,因为 setcookie 没有设置 coockie。

【问题讨论】:

  • 您是否尝试在您最喜欢的搜索引擎的搜索框中输入您的问题标题?这带来了什么结果?你有什么具体问题?
  • @Mat,是的,我做到了,但无法让它工作,将我的代码写到问题帖子中。
  • 你真的有这样的代码吗? cookie 很可能无法在您设置它的同一请求中被查询。不过,它应该可以在后续请求中找到。
  • @Mat,我只是刷新了两次页面。
  • @Mat,感谢您的支持))

标签: cookies erlang yaws


【解决方案1】:

最后我通过http头做到了:

out(A) ->
% read 
  yaws_api:find_cookie_val("lang", (A#arg.headers)#headers.cookie),

% send to browser 
  [{header,["Set-Cookie:","lang=ruler;","expires="++to_cookie_expire(60*60*24*30)++";"]},
  {html, ...}]
end.

to_cookie_expire(SecondsToLive) -> 
  Seconds = calendar:datetime_to_gregorian_seconds(calendar:local_time()),
  DateTime = calendar:gregorian_seconds_to_datetime(Seconds +
  SecondsToLive), httpd_util:rfc1123_date(DateTime).

【讨论】:

  • 你为什么要这样做?使用 yaws_api:set_cookie(name, value, options) 您可以在 Chrome 调试控制台 -> 网络中进行测试并单击请求,然后单击“cookie”选项卡,在那里您将找到请求和响应 cookie。
  • 也可能是您使用的是旧的 yaws 版本。充满了错误。升级到最新版本。
  • 忘记我的第一条评论,实际上,如果您使用 yaws_api:set_cookie/3 您无法在响应中添加更多内容,例如 json 或 html。我希望我做错了什么,因为这真的不切实际。
【解决方案2】:

本网站提供了一些偏航和设置 cookie 的示例代码: http://yaws.hyber.org/cookies.yaws

【讨论】:

  • 但是@Baxter 是对的,cookies.yaws 页面上的代码准确地解释了如何做到这一点。不需要直接设置 Set-Cookie 头,使用 yaws_api:set cookie 即可。
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2015-06-07
  • 2016-12-10
相关资源
最近更新 更多