美文网首页
TinyHttpd运行日志

TinyHttpd运行日志

作者: StevenHD | 来源:发表于2020-12-11 11:34 被阅读0次
    1. execl(path, path, NULL)
    1. 更改accept_request()中的函数
    1. GET的报文格式——


      GET
    1. setsockopt()必须在bind()之前,不然就没用了
    1. 动态申请端口号——


      动态申请端口号
    1. http短连接——


      短连接
    • 短连接:一次请求 + 一次响应,然后就会关闭套接字
    1. stat结构体——


      stat结构体可以用来获取`文件的属性`
    • cgi表示是否执行CGI文件
    • query_string表示指向请求行URL中参数的位置
    1. get_line()函数——读一行出来,核心是【处理\r\n
      getline()函数
    • 读取到\r的时候,看看后面是不是\n;如果是\r,那么就完整地读取出来。如果不是,就把\r替换成\n,然后就可以通过while退出循环,然后末尾加上个\0就结束。

      1. 请求头——


        请求头
      1. 截取出请求方法
      1. 501,一般5开头表示是服务器的问题
      1. 请求路径(请求资源)——


        GET后面的`/`就是`请求路径`
      1. 如果发现请求的文件不存在,那么还是要做的是把缓存区剩余的内容都读出来,读完的标志是读取到一个空行——
        stat返回-1的情况
        index.html文件是没有执行权限的。
    1. 静态文件只需要打开-->读取-->发送,但是CGI是需要执行的。CGI是一个接口,让web服务器可以调用其他外部程序的接口
    1. 标准输入与【CGI解析器】和标准输出和标准错误——
    • 创建第一个管道——CGI的输入
    • 创建第二个管道——CGI的输出
    • fork出一个子进程
    服务器进程写入,CGI进程读出;CGI进程写入,服务器进程读出
    • 重定向读端标准读入(将原先的文件描述符关掉)
    • 重定向写端标准写出(将原先的文件描述符关掉)
    • 从而建立了父子进程之间通信的2条管道
    通过标准输入传递信息
    • 也可以通过环境变量来传递头域信息——
      环境变量

    一、GET方式请求CGI

    • 需要把GET请求报文除了【第一行】以外的都丢弃

    • CGI的头域——

    头域
    • 第一行不是注释,而是指定解析器的位置——

      color.sh
    • GET中的URL带有参数

    • URL/color.sh?color=blue解析成路径/color.sh参数color=blue,将?变成了\0

    • QUERY_STRING这个环境变量的值就是color=red,需要解析出red

    • 通过color.sh文件的书写,可以解析这样的URLhttp://127.0.0.1:4000/color.sh?color=purple

    相关文章

      网友评论

          本文标题:TinyHttpd运行日志

          本文链接:https://www.haomeiwen.com/subject/mvxdgktx.html