perl cgi与javascript对话

perl cgi与javascript对话,javascript,database,perl,cgi,xss,Javascript,Database,Perl,Cgi,Xss,我想从一个在线数据库中检索csv文件。但是,由于一些XSS问题,我不能直接使用ajax,而是需要使用perl cgi文件 我已经有了一个可以运行的perl cgi文件,它可以查询csv文件,并将文件内容写入名为$text的perl变量中。以下是一些代码片段: #!/usr/bin/perl use strict; use CGI; use HTTP::Request::Common qw(POST); use LWP::UserAgent; # construct cgi object m

我想从一个在线数据库中检索csv文件。但是,由于一些XSS问题,我不能直接使用ajax,而是需要使用perl cgi文件

我已经有了一个可以运行的perl cgi文件,它可以查询csv文件,并将文件内容写入名为$text的perl变量中。以下是一些代码片段:

#!/usr/bin/perl

use strict;
use CGI;
use HTTP::Request::Common qw(POST);
use LWP::UserAgent; 

# construct cgi object
my $q = CGI->new;


# create a post request
my $useragent = LWP::UserAgent->new();  
my $request = POST '.....', [ 
     #something goes here
];
my $response = $useragent->request($request);
my $text = $response->content; 

print $text;
我对下一步做什么有一些大致的想法,但对细节不太确定。我将把这个perl-cgi文件上传到我的网站所在的服务器上,上传到名为cgi-bin的文件夹中。我只是想知道如何从javascript调用perl cgi文件,并将$text的内容写回javascript变量


感谢您的帮助

Javascript是客户端语言,而Perl是服务器端语言。这意味着您将无法将Perl变量的值直接读入Javascript

您可以做的是让Perl脚本输出其操作的结果。然后,Javascript通过AJAX调用此Perl脚本并读取结果

下面是一些伪代码来说明我的意思:

Perl脚本:csv\u worker.cgi

// retrieve csv file into $text as per OP

print "Content-type: text/csv\n\n";
print $text;
Javascript

function request() {
  var xmlhttp;
  if (window.XMLHttpRequest) {
    // Supports newer browsers
    xmlhttp=new XMLHttpRequest();
  } else {
    // Supports older IE versions (IE 5/IE 6)
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("result").innerHTML = xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","csv_worker.cgi",true);
  xmlhttp.send();
}

嗨,Jared Ng,我刚试过,至少这次我打印了一些东西,但是为什么不给我显示csv文件,而是显示。。。perl文件的内容。我错过了什么吗?@Josh听起来您的web服务器没有配置为将Perl文件解释为可执行脚本。您确定Perl文件位于web服务器配置的“cgi-bin”目录中吗?如果您使用的是Apache,请检查httpd.conf@Jared,我使用命令行(来自SSH secure shell)执行perl cgi文件,它会打印csv文件的值。我有一个疑问:我应该把cgi-bin文件夹放在public_-htm中,还是放在同一个目录中?ThanksIt应该位于web服务器配置为执行cgi脚本的目录中。检查您的服务器配置。我会的,但是如果我可以从命令行执行perl cgi文件(如上所述),这意味着我的服务器配置正确,对吗?