Cgicc 嵌入图像 - CGI 认为图像就是脚本

Cgicc embed image- cgi thinks image is script

本文关键字:图像 脚本 CGI Cgicc      更新时间:2023-10-16

我正在使用Cgicc构建一个简单的CGI应用程序。我正在尝试在我的页面中嵌入图像,但是,这是CGI返回的错误

127.0.0.1 - - [15/Nov/2014 13:26:52] code 403, message CGI script is not executable ('/cgi-bin/tmp3.jpg')

我正在使用 CGI 服务器调用 CGI 服务器的实例

andrew@ubuntu:~/www$ python -m CGIHTTPSever

C++守则

#include <iostream>
#include <sstream>
#include <string>
#include <unistd.h>
#include <fstream>
#include <stdlib.h>
#include "cgicc/Cgicc.h"
#include "cgicc/HTTPHTMLHeader.h"
#include "cgicc/CgiDefs.h"
#include "cgicc/Cgicc.h"
#include "cgicc/HTTPHTMLHeader.h"
#include "cgicc/HTMLClasses.h"
#define cimg_display 0
#include "CImg.h"
using namespace std;
using namespace cgicc;
int main(int argc, char **argv){
try{
    Cgicc formData;
    cout << HTTPHTMLHeader()<<endl;
    cout << HTMLDoctype(HTMLDoctype::eStrict)<<endl;
        // Set up the HTML document
        cout << html() << head() << title("Cgicc example") << head() << endl;
    cout << body().set("bgcolor","#cccccc").set("text","#000000").set("link","#0000ff").set("vlink","#000080") << endl;
    cout << img().set("src", "tmp3.jpg").set("height", "100").set("width", "100");
    cout << "<form method="GET" action="formProcessor.cgi">"<<endl;
    cout << h2("Input picure info") <<endl;
    cout << p("Height")<<endl;
    cout << "<input type="text" name="height"> <br>"<<endl;
    cout << p("Width");
        cout << "<input type="text" name="width"> <br>"<<endl;
    cout << "<input type="submit" value="Submit">"<<endl;
    cout << "</form>"<<endl;

}catch(exception& e){
cout  <<"Error"<<endl;
}

  return 0;
}

有谁知道这个问题的解决方案?我无法在网上找到太多关于这个问题的信息。

事实证明,

这里的问题不在于代码,而在于我存储图像的目录。我试图从cgi-bin目录中提供图像,这导致服务器将其解释为CGI脚本。我更改了这一行:

cout << img().set("src", "tmp3.jpg").set("height", "100").set("width", "100");

对此

cout << img().set("src", "/images/tmp3.jpg").set("height", "100").set("width", "100");

它开始正确提供图像。该行

cout << img().set("src", "tmp3.jpg").set("height", "100").set("width", "100");

正在从 URL 调用

http://0.0.0.0:8000/cgi-bin/myCGI.cgi

因此,如果没有绝对URL,图像就会被误认为是CGI脚本。