美文网首页aardio
网络请求学习笔记——aardio网站开发

网络请求学习笔记——aardio网站开发

作者: 63d3ca0ea4a3 | 来源:发表于2018-11-17 16:57 被阅读0次

    标题:网络请求学习笔记——aardio网站开发
    关键词:POST、GET、aardio
    作者:Puakzl

    一、HTTP请求

    一个HTTP请求由四个部分组成:请求行、请求头标、空行和请求数据


    1.请求行:

    请求行由三个标记组成:请求方法、请求URI和HTTP版本,它们用空格分隔。

    例如:GET /index.html HTTP/1.1

    HTTP规范定义了8种可能的请求方法:

    标签 说明
    GET 检索URI中标识资源的一个简单请求
    HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
    POST 服务器接受被写入客户端输出流中的数据的请求
    PUT 服务器保存请求数据作为指定URI新内容的请求
    DELETE 服务器删除URI中命名的资源的请求
    OPTIONS 关于服务器支持的请求方法信息的请求
    TRACE Web服务器反馈Http请求和其头标的请求
    CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理

    2.请求头标:

    由关键字/值对组成,每行一对,关键字和值用冒号(:)分隔。

    头标 解释 示例
    Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
    Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5
    Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip
    Accept-Language 浏览器可接受的语言 Accept-Language: en,zh
    Accept-Ranges 可以请求网页实体的一个或者多个子范围字段 Accept-Ranges: bytes
    Authorization HTTP授权的授权证书 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache
    Connection 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) Connection: close
    Cookie HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 Cookie: $Version=1; Skin=new;
    Content-Length 请求的内容长度 Content-Length: 348
    Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded
    Date 请求发送的日期和时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
    Expect 请求的特定的服务器行为 Expect: 100-continue
    From 发出请求的用户的Email From: user@email.com
    Host 指定请求的服务器的域名和端口号 Host: www.aardio.com
    If-Match 只有请求内容与实体相匹配才有效 If-Match:“737060cd8c284d8af7ad3082f209582d”
    If-Modified-Since 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
    If-None-Match 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 If-None-Match: “737060cd8c284d8af7ad3082f209582d”
    If-Range 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag If-Range:“737060cd8c284d8af7ad3082f209582d”
    If-Unmodified-Since 只在实体在指定时间之后未被修改才请求成功 If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
    Max-Forwards 限制信息通过代理和网关传送的时间 Max-Forwards: 10
    Pragma 用来包含实现特定的指令 Pragma: no-cache
    Proxy-Authorization 连接到代理的授权证书 Proxy-Authorization: BasicQWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Range 只请求实体的一部分,指定范围 Range: bytes=500-999
    Referer 先前网页的地址,当前请求网页紧随其后,即来路 Referer: http://www.aardio.com/archives/71.html
    TE 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 TE: trailers,deflate;q=0.5
    Upgrade 向服务器指定某种传输协议以便服务器进行转换(如果支持) Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
    User-Agent User-Agent的内容包含发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)
    Via 通知中间网关或代理服务器地址,通信协议 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
    Warning 关于消息实体的警告信息 Warn: 199 Miscellaneous warning

    3.空行:

    最后一个请求头标之后是一个空行,发送回车符和退行,通知服务器以下不再有头标。

    4.请求数据:

    使用POST传送数据,最常使用的是Content-TypeContent-Length头标。

    二、HTTP响应

    一个响应由四个部分组成:状态行、响应头标、空行、响应数据


    1.状态行:

    状态行由三个标记组成:HTTP版本、响应代码和响应描述。

    例如:HTTP/1.1 200 OK

    标记 说明
    HTTP版本 向客户端指明其可理解的最高版本。
    响应代码 3位的数字代码,指出请求的成功或失败,如果失败则指出原因。
    响应描述 为响应代码的可读性解释。
    HTTP响应代码 说明
    1xx 信息,请求收到,继续处理
    2xx 成功,行为被成功地接受、理解和采纳
    3xx 重定向,为了完成请求,必须进一步执行的动作
    4xx 客户端错误,请求包含语法错误或者请求无法实现
    5xx 服务器错误,服务器不能实现一种明显无效的请求

    详尽说明

    HTTP响应代码 说明
    100 提示/客户端应继续请求
    101 提示/切换协议
    200 已成功
    201 已成功/创建资源
    202 已成功/接受请求
    203 已成功/非权威信息
    204 已成功/无内容
    205 已成功/重置内容
    206 已成功/断点续传部分内容
    300 重定向/多项选择
    301 重定向/永久移动地址
    302 重定向/已找到地址
    303 重定向/参见其他
    304 重定向/未修改使用缓存
    305 重定向/需使用代理
    306 重定向/未使用
    307 重定向/临时
    400 客户端错误/错误请求
    401 客户端错误/未授权
    402 客户端错误/需付费
    403 客户端错误/禁止访问
    404 客户端错误/未找到
    405 客户端错误/错误的指令动词
    406 客户端错误/拒绝请求
    407 客户端错误/要求代理认证
    408 客户端错误/请求超时
    409 客户端错误/冲突
    410 客户端错误/已删除
    411 客户端错误/未指定长度
    412 客户端错误/未满足前提条件
    413 客户端错误/请求实体太大
    414 客户端错误/请求地址太长
    415 客户端错误/不支持的媒体类型
    416 客户端错误/错误的字节区段
    417 客户端错误/预期结果失败
    500 服务器错误/内部错误
    501 服务器错误/未实现
    502 服务器错误/网关故障
    503 服务器错误/无效服务
    504 服务器错误/网关超时
    505 服务器错误/不支持的HTTP协议版本

    2.响应头标:

    像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

    头标 解释 示例
    Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes
    Age 从原始服务器到代理缓存形成的估算时间(以秒计,非负) Age: 12
    Allow 对某网络资源的有效的请求行为,不允许则返回405 Allow: GET, HEAD
    Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
    Content-Encoding web服务器支持的返回内容压缩编码类型。 Content-Encoding: gzip
    Content-Language 响应体的语言 Content-Language: en,zh
    Content-Length 响应体的长度 Content-Length: 348
    Content-Location 请求资源可替代的备用的另一地址 Content-Location: /index.htm
    Content-MD5 返回资源的MD5校验值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
    Content-Range 在整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
    Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
    Date 原始服务器消息发出的时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
    ETag 请求变量的实体标签的当前值 ETag: “737060cd8c284d8af7ad3082f209582d”
    Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
    Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
    Location 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 Location: http://www.aardio.com/archives/94.html
    Pragma 包括实现特定的指令,它可应用到响应链上的任何接收方 Pragma: no-cache
    Proxy-Authenticate 它指出认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate: Basic
    refresh 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持) Refresh: 5; url=http://www.aardio.com/archives/94.html
    Retry-After 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 Retry-After: 120
    Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
    Set-Cookie 设置Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
    Trailer 指出头域在分块传输编码的尾部存在 Trailer: Max-Forwards
    Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
    Vary 告诉下游代理是使用缓存响应还是从原始服务器请求 Vary: *
    Via 告知代理客户端响应是通过哪里发送的 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
    Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning
    WWW-Authenticate 表明客户端请求实体应该使用的授权方案 WWW-Authenticate: Basic

    3.空行:

    最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。

    4.响应数据:

    HTML文档和图像等,也就是HTML本身。

    三、网站开发

    response对象

    用于响应请求并输出网页内容

    API 说明
    response.status HTTP响应头中的状态码,字符串值,默认为 "200 OK"
    response.contentType HTTP响应头中的MIME文件类型,字符串值,默认为"text/html",
    <code>response.contentType = "text/json"</code>//让浏览器识别为JSON
    response.cookies HTTP响应头中的cookies,表对象,例如:<code>
    response.cookies["名字"] = {
      value = "值";
      expires = time().addday(7); //过期时间
      maxAge = 3600; //过期秒数
    }</code>
    response.cookieDomain 默认cookie域名,注意cookie域名不能为localhost(可以是本地IP),如果不设置默认值为 request.host,注意cookie域名不区分端口号
    response.cookiePath 默认cookie目录,如果不设置默认值为 "/"
    response.charset 输出字符集,可以为空,默认值为UTF-8,aardio10使用的默认字符集为UTF-8,不建议更改此值,更改此值需要自行对输出HTML转换编码。
    response.headers 这是一个名值对组成的表对象,用于指定其他响应HTTP头。
    response.jsonPrettyPrint 指定respose.write函数将对象转换为JSON输出时否缩进格式化。
    <code>response.jsonPrettyPrint = true</code> //让aardio输出JSON时美化格式
    response.write() 输出一个或多个值,参数将自动转换为字符串对象,可直接输出结构体,其他table对象转换为JSON输出。需要注意调用此函数输出页面后(或HTML模板自动输出页面后),就会先输出HTTP头,输出HTTP响应头以后,再设置响应头有关的属性,例如 response.status 这些是不起作用的。
    <code> response.write( request ) //输出request对象(aardio会自动将对象转换为JSON)</code>
    response.writeBuffer(缓冲区,长度) 与response.write() 作用相同,不过输出的是缓冲区,注意缓冲区长度不应大于65535,response.write函数无此限制。
    response.error() 输出一个或多个500错误信息,参数将自动转换为字符串对象,table转换为格式化的对象输出,注意500错误信息只有在Web服务器本地打开网页时才能看到,客户端默认是看不到详细错误信息的。
    response.loadcode( aardio文件路径,其他调用参数 ) 这个函数用于快速加载一个*.aardio模板文件并输出网页,所有参数都可以省略,默认加载的文件路径为 request.path, 其他调用参数在网页中可使用 var a,b,c = ... 语句在文件开始接收参数。
    response.customErrors 这是一个表对象,键应当是一个HTTP错误代码(数值),值应当是一个回调函数,用于自定义response.loadcode函数的错误处理页内容,例如:<code>
    response.customErrors[404] = function(){
      response.status = "404 Not Found";
      response.write("404 Not Found");
    }</code>
    response.close() 关闭网页输出,这个函数并不需要我们自己调用,fastcgi模块会在请求结束后自动调用此函数。注意 respose.close并不会退出程序,应当使用 return 语句退出当前代码。

    response对象

    用于响应请求并输出网页内容

    API 说明
    response.status HTTP响应头中的状态码,字符串值,默认为 "200 OK"
    response.contentType HTTP响应头中的MIME文件类型,字符串值,默认为"text/html",
    <code>response.contentType = "text/json"</code>//让浏览器识别为JSON
    response.cookies HTTP响应头中的cookies,表对象,例如:<code>
    response.cookies["名字"] = {
      value = "值";
      expires = time().addday(7); //过期时间
      maxAge = 3600; //过期秒数
    }</code>
    response.cookieDomain 默认cookie域名,注意cookie域名不能为localhost(可以是本地IP),如果不设置默认值为 request.host,注意cookie域名不区分端口号
    response.cookiePath 默认cookie目录,如果不设置默认值为 "/"
    response.charset 输出字符集,可以为空,默认值为UTF-8,aardio10使用的默认字符集为UTF-8,不建议更改此值,更改此值需要自行对输出HTML转换编码。
    response.headers 这是一个名值对组成的表对象,用于指定其他响应HTTP头。
    response.jsonPrettyPrint 指定respose.write函数将对象转换为JSON输出时否缩进格式化。
    <code>response.jsonPrettyPrint = true</code> //让aardio输出JSON时美化格式
    response.write() 输出一个或多个值,参数将自动转换为字符串对象,可直接输出结构体,其他table对象转换为JSON输出。需要注意调用此函数输出页面后(或HTML模板自动输出页面后),就会先输出HTTP头,输出HTTP响应头以后,再设置响应头有关的属性,例如 response.status 这些是不起作用的。
    <code> response.write( request ) //输出request对象(aardio会自动将对象转换为JSON)</code>
    response.writeBuffer(缓冲区,长度) 与response.write() 作用相同,不过输出的是缓冲区,注意缓冲区长度不应大于65535,response.write函数无此限制。
    response.error() 输出一个或多个500错误信息,参数将自动转换为字符串对象,table转换为格式化的对象输出,注意500错误信息只有在Web服务器本地打开网页时才能看到,客户端默认是看不到详细错误信息的。
    response.loadcode( aardio文件路径,其他调用参数 ) 这个函数用于快速加载一个*.aardio模板文件并输出网页,所有参数都可以省略,默认加载的文件路径为 request.path, 其他调用参数在网页中可使用 var a,b,c = ... 语句在文件开始接收参数。
    response.customErrors 这是一个表对象,键应当是一个HTTP错误代码(数值),值应当是一个回调函数,用于自定义response.loadcode函数的错误处理页内容,例如:<code>
    response.customErrors[404] = function(){
      response.status = "404 Not Found";
      response.write("404 Not Found");
    }</code>
    response.close() 关闭网页输出,这个函数并不需要我们自己调用,fastcgi模块会在请求结束后自动调用此函数。注意 respose.close并不会退出程序,应当使用 return 语句退出当前代码。

    相关文章

      网友评论

        本文标题:网络请求学习笔记——aardio网站开发

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