读书人

能否用CGI写一个在服务器端访问其他网

发布时间: 2012-03-25 20:55:17 作者: rapoo

能否用CGI写一个在服务器端访问其他网站的asp文件,返回asp执行后的结果?
很惭愧,我不懂CGI。虚心向各位CGI版的XDJM们请教。

我用ASP写了一个网页,返回结果只是字符串的“1”或者“0”,连HTML标签也没有。
如果用客户端的AJAX访问就简单了。可是我希望用CGI写的网页在它的服务器端能够使用XMLHttpRequest或其他方式访问我的ASP网页,将ASP返回的字符串(1或0)保存在CGI的Session里。

要求:
1、最好写1个函数,名称是CheckAJAX,参数是访问的ASP的URL。函数内部用XMLHttpRequest或其他方式访问URL,返回ASP网页的结果,不使用异步访问。
如果用XMLHttpRequest,open方法的三个参数是 "GET "、URL、false。
2、这个CGI文件也需要代入两个参数:MyID和MyCode。这两个参数是提交到这个CGI文件的表单中文本框的名称。
用CGI实现类似下面代码的功能(我的是ASP代码):

/****开始****/

/*表单中名称为MyCode的文本框中输入了文字,asp代码*/
<%
If Request.Form( "MyCode ") <> " " Then

/*执行CheckAJAX函数,代入URL参数,将返回内容存入Session变量 "Result "中。
/*需要加入时间戳,使不能使用缓存。ASP的Timer可以返回从半夜零点开始到现在的毫秒数
Session( "Result ") = CheckAJAX( "http://www.AAAAA.com/Check.asp " _
"?TimeStamp= " & Timer & _
"&ID= " & Request.Form( "MyID ") & _
"&Code= " & Request.Form( "MyCode "))
End If
%>

<p> 这是HTML代码。URL返回结果是: <%=Session( "Result ")%> </p>


/*ASP代码*/
<%
If Session( "Result ") = "1 " Then
Response.Write( " <p> 是1 </p> ")
Else
Response.Write( " <p> 不是1 </p> ")
End If
%>

/****结束****/

3、请写出完整的包括HTML的代码。就是包括:
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 " />
<title> 无标题文档 </title>
</head>

<body>
</body>
</html>

似乎CGI不能和HTML同时存在,那么我的要求不能实现吗?
非常感激!

[解决办法]
兄弟, 分不是问题.
问题是昨天看你的问题 n 遍都没看清楚你想做什么.
现在看到你的最后几句话, 才知道你想做什么(^o 呵呵, 夸张了点).



你这原理, 其它语言编写方法与之类似.
原理: (1) 浏览器访问 A 站点
(2) A 站点再访问 B 站点
(3) A 站点把 B 的应答, 重新组织返馈给浏览器.

只要注意一点, 就是其它语言都不一定全有服务器 AJAXRequest 对象.
这并不可怕, 可以直接使用 socket 等网络编程接口自己写段 http 请求的处理程序.

实例:
300 行代码 打磨自己的搜索引擎 myso
http://bbs.chinaunix.net/viewthread.php?tid=890886


Seesion 跨域共享的方法见过很多, 并各有利弊.
最常用的是通过 "终端标识(如IP + 浏览器端cookie) " +
"服务器端定制 session 存取(如把session数据放在同一数据库) " 实现共享.


另外, CGI 本身是并不复杂的概念,
但对初学者(特别是用惯了 ASP/JSP/PHP的程序员) 确实很多力不从力之处.
因为, CGI 是标准不是工具, 全部从头开发太累.

CSP/eybuild 是基于 CGI 标准的 WEB 开发工具, 跟 ASP/JSP/PHP 用法差不多,
但它几乎不需要你撑握任何 CGI 的东西.
可以了解下 http://www.eybuild.com

读书人网 >CGI

热点推荐