免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8752 | 回复: 16
打印 上一主题 下一主题

[Web] 在BOA服务器下,如何用CGI程序写入COOKIE? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-21 14:32 |只看该作者 |倒序浏览
如题。我用printf("Set-cookie:name=value;\r\n");不行
        用printf("cookie:name=value;\r\n");也不行:em12:
        请教大家,怎么写才可以啊?

第四楼和第五楼有对于这个问题的进一步描述。希望大家帮助。

PS:CGI程序是用C写的。

[ 本帖最后由 悠悠南风 于 2006-12-25 13:21 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
2 [报告]
发表于 2006-12-21 17:34 |只看该作者
Set-Cookie: name=value; expires=Thu, 21-Dec-2006 10:32:12 GMT; path=/; domain=yourdomain
后面还要加上\r\n

论坛徽章:
0
3 [报告]
发表于 2006-12-21 17:55 |只看该作者
请参考下:
关于 boa webserver 是否支持 cookie:
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

Boa Web Server 缺陷报告及其修正方法:
http://bbs.chinaunix.net/viewthr ... amp;highlight=newzy

Good Luck!

论坛徽章:
0
4 [报告]
发表于 2006-12-25 13:12 |只看该作者
非常感谢楼上。
你发的两个贴子我在发贴前就已经看过了。
还是不知道该怎么做。
究竟怎么写CGI才能写入COOKIE呢?
能否明示?

论坛徽章:
0
5 [报告]
发表于 2006-12-25 13:26 |只看该作者
对不起,刚才看了一下,5楼提到的BOA非BOA服务器,而一种服务器端的脚本语言。
我汗,因为那个网页是老师给我看的,所以我没有仔细较对此BOA非彼BOA,让大家见笑了。

[ 本帖最后由 悠悠南风 于 2006-12-25 13:27 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-12-25 18:36 |只看该作者
看下下边这段码, 试下试就知道如何读取 cookie 了 (C 直接嵌入在 HTML中).
setcookie() -- 设置 cookie
getcookie() -- 读取 cookie
isblankstr()  -- 测试字符串是否为空.
G()               -- 根据名字读取提交的 HTML 表单项的值.

API 参考: http://www.eybuild.com/develop/doc/API/ebrespond.html#setcookie
运行结果如下图所示:
(1) 输入 cookie 名
(2) 点击 "Set" 添加新 cooke
(3) 输入 cookie 名
(4) 点击 "Query" 查询 cookie 的值.
(5) "Current cookies:" 后面显示的是当前所有cookie 的值, HTTP_COOKIE 中的原始形式.

            

mycookie.csp 源程序:

  1. #!/usr/bin/cspengine
  2. <html>
  3. <body>
  4. <% /* user click set command */
  5. if (!isblankstr(G("set"))) {
  6.     setcookie(G("ckname"), G("ckvalue"), NULL);
  7. } %>

  8. <% /* user click query command */
  9. if (!isblankstr(G("query"))) { %>
  10.     Current cookies: <% =getHttpCookie() /* show raw info */ %><br>
  11.     name: <% =G("ckname") %><br>
  12.     value: <% =getcookie(G("ckname")) %><br>
  13. <% } %>

  14. <form method=post action=<% =thisCgiPrefix() %>>
  15. Cookie name: <input type=input name=ckname><p>
  16. Cookie value: <input type=input name=ckvalue><p>
  17. <input type=submit value="Set" name=set>
  18. <input type=submit value="Query" name=query>
  19. </form>
  20. </body>
  21. </html>
复制代码

[ 本帖最后由 newzy 于 2006-12-25 20:14 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-12-26 11:39 |只看该作者
再次感谢楼上。
如果要用那些函数,我还得先装CSP吧。
我学会了透过CSP设置COOKIE,还是不明白BOA是怎么解决设置COOKIE这个问题的啊。
BOA的cgi_header.c完全没有提到COOKIE的问题,这么说是不是用CGI是不能告诉BOA我需要设置COOKIE的?

论坛徽章:
0
8 [报告]
发表于 2006-12-26 17:56 |只看该作者
http://bbs.chinaunix.net/viewthread.php?tid=865157
<<关于 boa webserver 是否支持 cookie>>一文已经说得很清楚:
其次, 在boa 源码中未找到对 Cookie 头的处理, 就果断地断定 boa 不支持
   cookie 是一种很不负责任的做法.
   首先, Set-Cookie 是服务器向浏览器发送的信息, 而非向 boa 发送的信息.
   boa 能接受的 Cookie 信息为: Cookie: name=value;...
   这是一处非常明显的错误.
   
   其次, 在boa 源码中未找到对 Cookie 头的处理, 就果断地断定 boa 不支持
   cookie 是一种很不负责任的做法.

   在 CGI/1.1 标准中未对COOKIE 进行定义,
   在它在协议特殊元素(Protocol-Specific Metavariables)一节中, 指出
   webserver 必须用 "HTTP_" 开头标记 HTTP协议的特殊元素. 其中 cookie 就
   在其中之列. 所以 HTTP_COOKIE 是服务器传递给 CGI 程序的一个变量.

   boa 支持这一协议规定, 它将非CGI/1.1标准的元素用 "HTTP_" 头标记. 这样,
   当浏览器发送 Cookie 头时, 将被自动转换成 HTTP_COOKIE, 而非显式地进行
   转换, 所以在源代码中不能找到任何 Cookie的影子.
   从 cgi.c 的 add_cgi_env() 函数可以证实这一点.  

   实践证明, boa 支持 Cookie.


good luck!

论坛徽章:
0
9 [报告]
发表于 2006-12-28 15:40 |只看该作者
汗,用BOA读取COOKIE我已经搞定了。
BOA能接受的COOKIE信息是"COOKIE:NAME=VALUE"这是指的浏览器发送的HTTP消息中的内容吧。
但是从CGI_HEADER.C中没有COOKIE处理内容来看,用CGI让服务器向浏览器写入COOKIE是不可能的吧?
我现在很好奇怎么样才能让BOA告诉浏览器它需要设置COOKIE。
有可能吗?

论坛徽章:
0
10 [报告]
发表于 2008-04-02 15:30 |只看该作者
你好,请教一下,怎么读取和设置cookie
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP