1

我尝试使用托管在本地 IIS(Win7)上的 cgi 脚本为 javascript 函数设置变量:

计算机图形学:

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 文件时,什么都不做。当我用萤火虫分析页面时,js-tag中有很多奇怪的字符,在这些字符中间的某个地方有我的输出:“var value = 2”。

有人知道发生了什么吗?任何帮助将不胜感激!

编辑:这里萤火虫告诉我的片段在脚本标签之间:

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

在这里似乎还不错。自然,您必须从 localhost(或其他服务器)运行它

测试Cgi.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' 会立即送人 - Mark Zbikowski。

基本上,它实际上是在提供 exe 文件本身,而不仅仅是它的结果。

如果您在十六进制编辑器中打开文件,它看起来会非常相似。

当你说,这就是你所拥有的“几乎”时,魔鬼总是在细节中。

还有更多吗?

我有 2 条建议 - (1) 提供最小的完整源来复制您的问题,就像我所做的那样 (2) 将文件扩展名更改为 .cgi 并更改 javascript 以反映这一点。(您还应该养成在项目中添加另一个构建目标并将其输出文件夹设置为您的 cgi-bin 文件夹的习惯,也是 cgi 的扩展名,而不是 exe)这不应该对这个问题产生影响,但通常最好不要在该文件夹中有容易执行的文件 - 很容易,因为您可以双击它们并且它们将运行,如果您使用完整路径,您始终可以从命令行运行,就像 apache 一样。

啊!刚刚意识到您正在使用 IIS - 我想您会发现这是一个搞砸了您的输出的东西。可能使第 (1) 点没有实际意义——在我看来,它更有可能是一个 IIS 设置——尽管它也可以提供文件的内容,而不是输出——仅仅基于它的扩展名。试试看!

于 2012-10-10T19:04:18.497 回答