2012-02-28 63 views
1

是否有像php setcookie这样的功能。如果不是那么如何?如何用雅司饼干设置饼干

编辑:

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

find_cookie_val返回空字符串,因为setCookie方法didnt设置coockie。

+0

你尝试在你喜欢的搜索引擎的搜索中键入您的问题标题框?这给了什么结果?你有什么具体问题? – Mat 2012-02-28 14:30:06

+0

@Mat,是的,我做了,但不能让它工作,我的代码写入问题帖子。 – Yola 2012-02-28 14:53:57

+0

你真的有这样的代码吗?最有可能的cookie不能在您设置的相同请求中查询。但应该可以在随后的请求中找到。 – Mat 2012-02-28 14:58:33

回答

1

该网站提供了一些示例代码,雅司病,设置cookies: http://yaws.hyber.org/cookies.yaws

+1

但@Baxter是正确的,cookies.yaws页面上的代码正确地解释了如何做到这一点。你不需要直接设置Set-Cookie头,只需使用yaws_api:set cookie。 – 2012-02-29 03:59:08

2

最后我做到了通过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). 
+0

你为什么这样做?使用您可以在Chrome调试控制台 - >网络中测试的yaws_api:set_cookie(名称,值,选项),然后单击该请求,然后单击“cookie”选项卡,即可找到请求和响应cookie。 – Aus 2016-08-04 15:28:37

+0

此外,它可能是你使用旧的雅司版本。充满了错误。升级到最新。 – Aus 2016-08-04 15:29:16

+0

忘记我的第一条评论,实际上,如果您使用yaws_api:set_cookie/3,则无法在响应中添加更多内容,如json或html。我希望我做错了什么,因为这是不切实际的。 – Aus 2016-08-05 15:47:25