我是第一次看AJAX,我想知道是否有可能从用C编写的服务器端CGI应用程序发出请求?
请问C应用程序只需要使用printf的数据,类似于此的.asp例子吗?
我在使用 Ruby 中的 Base64.decode64 解码字符串时遇到问题。作为测试,我正在使用这个网站来解码 php 中的字符串:https : //rnd.feide.no/simplesaml/module.php/saml2debug/debug.php。
作为测试,我使用这个字符串:
fZJNT%2BMwEIbvSPwHy%2Fd8tMvHympSdUGISuwS0cCBm%2BtMUwfbk%2FU4zfLvSVMq2Euv45n3fd7xzOb%2FrGE78KTRZXwSp5yBU1hpV2f8ubyLfvJ5fn42I2lNKxZd2Lon%2BNsBBTZMOhLjQ8Y77wRK0iSctEAiKLFa%2FH4Q0zgVrceACg1ny9uMy7rCdaM2%2Bs0BWrtppK2UAdeoVjW2ruq1bevGImcvR6zpHmtJ1MHSUZAuDKU0vY7Si2h6VU5%2BiMuJuLx65az4dPql3SHBKaz1oYnEfVkWUfG4KkeBna7A%2Fxm6M14j1gZihZazBRH4MODcoKPOgl%2BB32kFz08PGd%2BG0JJIkr7v46%2BhRCaEpod17DCRivYZCkmkd4N28B3wfNyrGKP5bws9DS6PKDz%2FMpsl36Tyz%2F%2Fax1jeFmi0emcLY7C%2F8SDD0Z7dobcynHbbV3QVbcZW0TlqQemNhoqzJD%2B4%2Fn8Yw7l8AA%3D%3D
输出应该是:
<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="agdobjcfikneommfjamdclenjcpcjmgdgbmpgjmo" Version="2.0" IssueInstant="2007-04-26T13:51:56Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" ProviderName="google.com" AssertionConsumerServiceURL="https://www.google.com/a/solweb.no/acs" IsPassive="true"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">google.com</saml:Issuer><samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" /></samlp:AuthnRequest>
但是在 Ruby 中,我不断得到一个奇怪的输出:
}\222MO?0\206?H?\a??|\264???jRuA\210J????\233?LS\a??8???IS*?K\257??}????\377\254a;??e|\022\247\234\201SXiWg????~?y~~6#iM+\026]?'??6L:\022?C?;?J?$\234\264@\"(\261Z?~?8\255?\n\rg??\214??u\2436??Z?i\244\255\224\001?V5\266\256?m??"g/G\254?kI???Q\220.\f\2454\275\216?hzUN~\210?\270\274z??t???!?)\254????}Y\026Q?*G\201\235\256??\031\2723^#?b\205\226\263\005\021?0??\243?_\201?i\005?O\017\031??H\222\276??\241D&\204\246\207u?0?\212?
I\244w\203v??|?\030\243?o
.\217(<\3772\233%??????X?h\264zg\vc\260\277? ??\236?\2672\234v?Wt\025m?V?9jA?\212\263$?\270\376\177\030ù|\000
我使用的代码是:
require 'cgi'
require 'base64'
Base64::decode64(CGI::unescape('fZJNT%2BMwEIbvSPwHy%2Fd8tMvHympSdUGISuwS0cCBm%2BtMUwfbk%2FU4zfLvSVMq2Euv45n3fd7xzOb%2FrGE78KTRZXwSp5yBU1hpV2f8ubyLfvJ5fn42I2lNKxZd2Lon%2BNsBBTZMOhLjQ8Y77wRK0iSctEAiKLFa%2FH4Q0zgVrceACg1ny9uMy7rCdaM2%2Bs0BWrtppK2UAdeoVjW2ruq1bevGImcvR6zpHmtJ1MHSUZAuDKU0vY7Si2h6VU5%2BiMuJuLx65az4dPql3SHBKaz1oYnEfVkWUfG4KkeBna7A%2Fxm6M14j1gZihZazBRH4MODcoKPOgl%2BB32kFz08PGd%2BG0JJIkr7v46%2BhRCaEpod17DCRivYZCkmkd4N28B3wfNyrGKP5bws9DS6PKDz%2FMpsl36Tyz%2F%2Fax1jeFmi0emcLY7C%2F8SDD0Z7dobcynHbbV3QVbcZW0TlqQemNhoqzJD%2B4%2Fn8Yw7l8AA%3D%3D'))
Run Code Online (Sandbox Code Playgroud)
可能有什么问题?提前致谢。
我创建了一个名为"nph-select.pl"的文件,并将代码放入重定向,如下所示.
#!"D:\xampp\perl\bin\perl.exe" -w
use CGI qw/:standard/;
my $cgi = new CGI;
print $cgi->redirect(-uri => 'http://www.google.com/', -nph => 1);
Run Code Online (Sandbox Code Playgroud)
并执行文件然后它给我302状态消息说"文件已移动到这里".但是,当我重命名同一个文件时只需删除" - ",即新文件名是"nphselect.pl",然后它也可以正确运行重定向.任何人都可以建议我缺少什么设置?
我的请求标题是
Host localhost:8080
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Host localhost:8080
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
并且响应标题是空白的.
从客户端浏览器到Apache httpd webserver,通过TCP/IP(套接字)有一个明确定义的协议HTTP.我很难理解从Apache httpd webserver到Perl或PHP或CGI使用的通道/协议是什么?它是通过套接字或pipse或消息队列或信号进行进程间通信吗?有人能否了解幕后的真实情况?是否Apache httpd webserver执行另一个程序(Perl或PHP)并捕获输出然后将其重新发送到客户端浏览器?
CGI协议未指定Web服务器应如何与CGI程序通信.有两个主要的解决方案:
独立的CGI程序
Apache接收一个CGI请求,打开一个到外部程序的双向管道,向它发送CGI输入数据,并将程序的输出返回给客户端.作为一个单独的进程,程序可能会崩溃而不会关闭Web服务器.缺点是启动新流程的速度相对较慢.
内置CGI程序
该程序被重写为Apache模块,只有在Apache进程启动时才会产生启动成本.这比外部程序快得多,并且可以访问Apache的内部和其他模块.Apache中最流行的CGI模块是Perl(mod_perl)和PHP(mod_php)的解释器引擎.
我正在尝试建立一个网站作为绘图程序和用户输入文件之间的接口.绘图程序需要几个参数,我可以允许用户使用输入标签输入.但是绘图程序需要用户输入图例来区分输入文件中的值,即值的范围(边界)和该范围的相应颜色.我创建了一个包含一个范围所需输入元素的字段集.当用户单击"添加另一个范围"时,将清除字段集的内容,以便为新输入做好准备.并且先前输入的输入作为新行存储在下表中.除此行外,还有一个"删除"按钮.
由于本网站面向多个用户,因此该信息也应该是相应用户的专有信息.有人可以告诉我应该用什么方法?绘图程序是用perl编写的,我在这个网站上使用CGI.这种方法应该允许html部分访问数组中的当前值,因此我可以动态地在表中显示输入的范围.该方法还应允许删除/修改/添加这样输入的范围信息.我在考虑一个临时数据库.但是我只需要字符串中所有范围信息的最终版本,因此我可以将其发送到CGI程序并将其组织为输入到perl绘图程序的正确格式.
非常感谢任何帮助或提示!我是这个地区的新手.非常感谢您的时间和提前帮助!
我正在尝试一个基本的Perl/CGI脚本来跟踪访问网页的访问者.Perl代码如下所示:
#!/usr/bin/perl
#KEEPING COUNT OF VISITORS IN A FILE
use CGI':standard';
print "content-type:text/html\n\n";
#opening file in read mode
open (FILE,"<count.dat");
$cnt= <FILE>;
close(FILE);
$cnt=$cnt+1;
#opening file to write
open(FILE,">count.dat");
print FILE $cnt;
close(FILE);
print "Visitor count: $cnt";
Run Code Online (Sandbox Code Playgroud)
问题是网页不会增加每次刷新的访问者数量.计数保持在$ cnt的初始值,即1.问题所在的任何想法?
所以我正在使用Windows 7和Xampp运行localhost测试服务器.我正在开发一个可以抓取网页的网页抓取工具,但是当我在浏览器中打开它时,我得到了脚本标头过早结束的错误.我以为我得到的不包括"打印"内容类型:text/html \n \n";" 这通常是问题..但事实并非如此.
这是我正在使用的代码:
#!"\xampp\perl\bin\perl.exe"
print "Content-Type: text/html\n\n";
use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTML::LinkExtor;
open my $file1,"+>>", ("links.txt");
select($file1);
my @urls = ('http://www.youtube.com/');
my $browser = LWP::UserAgent->new('IE 6');
$browser->timeout(10);
while (@urls) {
my $url = shift @urls;
my $request = HTTP::Request->new(GET => $URL);
my $response = $browser->request($request);
if ($response->is_error()) {printf "%s\n", $response->status_line;}
my $contents = $response->content();
my ($page_parser) = HTML::LinkExtor->new(undef, $url);
$page_parser->parse($contents)->eof;
@links = $page_parser->links;
foreach $link (@links) {
push …Run Code Online (Sandbox Code Playgroud) $chosenbeer = param('beers');
$beerprice = `grep "$chosenbeer" beers | gawk '{gsub(/[a-zA-Z\t ]/,"");print $1}'`;
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试使用的代码,$ chosenbeer是以前来自CGI页面的列表的字符串.我正试图让啤酒的价格被选中.
啤酒出线:
Dogfish Head 60 Minute IPA 35.96
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这是行不通的.知道为什么吗?当我打印$ beerprice时,没有任何结果.
有没有办法在使用perl cgi模块时向th调用添加其他参数(即类)?
我知道我们可以使用一堆打印/等,但我想看看我们是否可以使用th
这是我的电话:
print th({-class=>'myClass'},['Col1','Col2',@MoreColumns]);
Run Code Online (Sandbox Code Playgroud)
它为所有列设置myClass.我想设置只有一列和/或为每列设置差异列
我希望它是这样的:
<thead>
<tr>
<th class=specialClass>Col1
<th class=AnotherClass>Col2
<th class=ArrayClass>Col3FromArray
<th class=ArrayClass>Col4FromArray
<th class=ArrayClass>Col4FromArray
</tr>
</thead>
Run Code Online (Sandbox Code Playgroud)
这是可能的perl cgi th([或者我需要使用一堆打印/循环?
尝试在Google App Engine上开发一个python Web服务,该服务将处理从HTML表单发布的数据.有人可以告诉我我做错了什么吗?所有文件都驻留在桌面\ helloworld上的同一目录中.
操作系统:Win 7 x64 Python 2.7 Google App Engine(本地)
helloworld.py
import webapp2
import logging
import cgi
class MainPage(webapp2.RequestHandler):
def post(self):
self.response.headers['Content-Type'] = 'text/plain'
form = cgi.FieldStorage()
if "name" not in form:
self.response.write('Name not in form')
else:
self.response.write(form["name"].value)
app = webapp2.WSGIApplication([('/', MainPage)],debug=False)
Run Code Online (Sandbox Code Playgroud)
page.html中
<html>
<body>
<form action="http://localhost:8080" method="post">
Name: <input type="text" name="name"/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用浏览器(Chrome)查看page.html,我在字段中输入文本并按提交,我希望看到文本显示在浏览器中,但我得到"名称不在表单中".如果我将HTML表单方法更改为get并将python函数更改为def get(self),它可以工作,但我想使用post方法.任何有关解释的帮助将不胜感激.
cgi ×10
perl ×7
ajax ×1
apache ×1
arrays ×1
awk ×1
base64 ×1
c ×1
decode ×1
formatting ×1
grep ×1
html ×1
nph ×1
persistence ×1
php ×1
python ×1
ruby ×1
server-side ×1
web-services ×1
xampp ×1