1

ローカルIIS(Win7)でホストされているcgiスクリプトを使用して、javascript関数の変数を設定しようとしています。

cgi:

cout<<"Content-type: text/javascript\r\n\r\n";
cout<<"var value=2;";

javascript:

<script type="text/javascript" src="./cgi-bin/value.exe"></script>
<script type="text/javascript">
<!--
document.write('The number is: ' + value);
-->
</script>

しかし、js-code document.writeを使用してhtmlファイルを開くと、何も実行されません。そして、Firebugを使用してページを分析すると、js-tag内の多くの奇妙な文字と、これらの文字の中間のどこかに、「varvalue=2」という出力があります。

誰かが何が起こっているのか考えていますか?どんな助けでも大歓迎です!

編集:ここでは、firebugが教えてくれたスニペットがスクリプトタグの間にあります:

MZ�������ÿÿ��¸�������@�����

)��")��4)��F)��\)��p)��z)��)��)��)��¬)��Æ)
��Ø)��)��ô(��Ê(��¼  (��°(��¤(��(��(��(�
(��l(��^(��<(��à(����������@���������È@�û��
������bad allocation��Content-type: text/javascript
���var NumberOfFiles = 2; 

?�������������0���������������� ��H���
X@��V�������<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" 
version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
/assembly>PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDING
XXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADD���0�������

この出力がどこから来ているのか誰かがわかりますか?

4

1 に答える 1

0

ここでは問題ないようです。当然、ローカルホスト(または他のサーバー)から実行する必要があります

testCgi.html

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="/cgi-bin/cgiBinNum.cgi"></script>
<script type="text/javascript">
    document.write('The number is: ' + value);
</script>
</head>
<body>
</body>
</html>

cgiBinNum.cpp

#include <iostream>

using namespace std;

int main()
{
    cout<<"Content-type: text/javascript\r\n\r\n";
    cout<<"var value=2;";
    return 0;
}

出力:

<!DOCTYPE html>
<html><head>

<script type="text/javascript" src="/cgi-bin/cgiBinNum.cgi"></script>
<script type="text/javascript">
document.write('The number is: ' + value);
</script></head><body>The number is: 2




</body></html>

ええ、「MZ」はそれを即座に与えます-マーク・ズビコフスキー。

基本的に、それは実際にはその結果だけでなく、exeファイル自体を提供しています。

ファイルを16進エディタで開くと、非常によく似ています。

あなたが言うとき、それはあなたが持っているものの「かなり」です、悪魔は常に細部にあります。

それらをもう手に入れましたか?

私は2つの提案をしました-(1)私が行ったように、問題を再現する最小の完全なソースを提供します(2)ファイル拡張子を.cgiに変更し、これを反映するようにjavascriptを変更します。(また、プロジェクトに別のビルドターゲットを追加し、その出力フォルダーをexeではなくcgiの拡張子であるcgi-binフォルダーに設定する習慣を身に付ける必要があります)これはこの問題に違いはありませんが、ただし、一般に、そのフォルダーに簡単に実行可能なファイルを含めない方がよいでしょう。ファイルをダブルクリックすると実行できるので、apacheのようにフルパスを使用すれば、いつでもコマンドラインから実行できます。

ああ!IISを使用していることに気づきました。出力を台無しにしているのはb@stardだと思います。おそらくポイント(1)は議論の余地があります-それはIIS設定になる可能性が高いように思えますが、出力ではなくファイルのコンテンツを提供することもできますが、単にその拡張子に基づいています。試してみる!

于 2012-10-10T19:04:18.497 に答える