如何发送文本/html数据到浏览器


How to send text/html data to a browser

你好,我之前问了一个问题:如何集成php与我的http-server我编写了一个个人web服务器,我试图使用PHP- cgi将其与PHP集成,我运行一个系统命令("PHP- cgi .exe路径/到/PHP/script.php getvar=getValue"),我将输出发送到浏览器,一切都很酷,除了输出显示在浏览器中为纯文本页面,如:

X-Powered-By: PHP/5.4.14 Set-Cookie:PHPSESSID = 9 rurvleetdkucms44i4cac9a14;path=/截止日期:1981年11月19日星期四Cache-Control:不存储,不缓存,必须重新验证post-check=0, pre-check=0 Pragma: no-cache Content-type: text/html

ID value = AAAA

下面是PHP脚本:
<?php
session_start();
echo "< h1>ID value = < /h1>". $_GET['id'];
?>

和我使用的命令:php-cgi html_doc/index.php id=AAAA

我的问题是:为什么它发送数据在纯/文本而不是文本/html我想要的?为什么它会像上面那样在浏览器中显示标题信息呢?提前感谢大家!(注意:我分开了<</p>

这是一个使用C sockets的BASIC html_to_browser

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <strings.h>

int main(int argc, char *argv[]){
    char *reply = 
    "HTTP/1.1 200 OK'n"
    "Date: Thu, 19 Feb 2009 12:27:04 GMT'n"
    "Server: Apache/2.2.3'n"
    "Last-Modified: Wed, 18 Jun 2003 16:05:58 GMT'n"
    "ETag: '"56d-9989200-1132c580'"'n"
    "Content-Type: text/html'n"
    "Content-Length:156'n"
    "Accept-Ranges: bytes'n"
    "Connection: close'n"
    "'n"
    "o EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE GRANDE ___2 'n 'r'n'r'n"
    "THIS IS A HTTP RESPONSE TO BROWSER 'n USING C SOCKETS _ ''_t 5 'n 'r'n'r'n"
    "'r'n'r'n 'r'n'r'n 'r'n'r'nNOT FINISHED AA _3'r'n'r'n";
    int sd = socket(PF_INET, SOCK_STREAM, 0);
    struct sockaddr_in addr;
    bzero(&addr, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(80);
    addr.sin_addr.s_addr = INADDR_ANY;
    if(bind(sd,(struct sockaddr*)&addr,sizeof(addr))!=0){
        printf("bind error'n");
    }
    if (listen(sd, 16)!=0){
        printf("listen error'n");
    }
    while(1){
        socklen_t size = sizeof(addr);
        int client = accept(sd,(struct sockaddr*)&addr, &size);
        if (client > 0)
        {
            printf("client connected'n");
            /*send(client, reply, sizeof(reply), 0);*/
        send(client, reply, strlen(reply)+1, 0);
        }
    }
    return 0;
}

编译+执行在控制台与sudo(允许端口80)或更改地址。

…按Ctrl +z结束

在php中,你会做header("Content-Type: text/html");来设置一个默认值,将php. ini中的default_mimetype指令更改为正确的mime类型