私は完全に立ち往生していて、なぜこれが起こっているのか分かりません - 助けてください!! :)
Perl でコーディングされたメソッドを呼び出そうとする JavaScript があります。
JavaScript 関数:
function getSOAP() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'http://localhost/ispy/cwebs/hi/', true);
// build SOAP request
var sr =
'<?xml version="1.0" encoding="UTF-8"?>' +
'<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
'<Body>' +
'<hi>' +
'<who>markh</who>' +
'</hi>' +
'</Body>' +
'</Envelope>';
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) { alert('done use firebug to see responce'); }
}
}
// Send the POST request
xmlhttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
xmlhttp.setRequestHeader("SOAPAction", '"urn:iSPYcwebs#hi"');
xmlhttp.setRequestHeader("Accept", '"application/soap"');
xmlhttp.send(sr);
}
====== Apache httd.conf 内:
# BEGIN MOD_PERL CONFIG
ScriptAlias /perl-bin/ "C:/work/dev/indigoampp/apache-2.2.11/perl-bin/"
<Location /ispy/cwebs/hi>
SetHandler perl-script
PerlSendHeader On
PerlResponseHandler Apache::SOAP
PerlSetVar dispatch_to "C:/work/dev/indigoampp/perl-5.10.0/site, iSPYcwebs::hi"
PerlSetVar options "compress_threshold => 1000"
</Location>
<Directory "C:/work/dev/indigoampp/apache-2.2.11/htdocs">
<IfModule mod_perl.c>
# Files directive is only valid in Directory section
<Files ~ "\.(pl|pm|cgi)$">
SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
Allow from all
PerlSendHeader On
</Files>
</IfModule>
</Directory>
# END MOD_PERL CONFIG
======
私が呼び出そうとしているPerlコード:
#!C:/work/dev/indigoampp/perl-5.10.0/bin/perl.exe -w
package iSPYcwebs;
use strict;
use SOAP::Lite +trace => 'debug';
use vars qw(@ISA);
@ISA = qw(&hi SOAP::Server::Parameters );
sub hi {
my $self = shift;
my $envelope = pop;
my $who = $envelope->dataof("//hi/who")->value;
return SOAP::Data->name('hello' => 'iSPY says hello to '.$who);
}
1;
======
そして、これはエラー文字列です:
C:\work\dev\indigoampp\perl-5.10.0\site\lib/SOAP/Lite.pm 2806 行目でクラス (main) のメソッド (hi) へのアクセスが拒否されました。
======
私は地球上でこれを試みた最初の人ではないと確信していますが、どこにも答えを見つけることができないようです. Stackoverflow - あなたは私の最後の希望です!!