分类 "实用技巧" 下的文章

HTTP响应格式

响应头格式.png

状态行(响应首行)分析: HTTP/1.1 200 OK
包含 协议–>>HTTP/1.1, 响应码(状态码)—>>200 , 状态码描述—>>OK 状态码:

常见状态码

  • 200 OK 服务器很好的处理了客户端的请求,一切 OK
  • 302 Found 重定向(发生两次请求) 例如经常去一家饭店吃饭,突然某一天饭店搬迁,只剩下一个门,门上写着新店在左边100米处,然后你根据纸条找到新饭店; 302就相当于门上的条,当你访问一个网站时他给你返回302你需要重新访问新的网址;这里面发生了2次请求
  • 304 Not Modified通常表示资源文件在服务器没有更改,而浏览器端又有缓存,这时候回送 304 状体码通知浏览器拿本地的缓存显示。
  • 400 Bad Request表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
  • 401 Unauthorized表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外,若之前已进行过 1 次请求,则表示用户认证失败。返回含有 401 Unauthorized 的响应必须包含一个适用于被请求资源的 WWW-Authenticate 首部用以质询(challenge)用户信息
  • 403 Forbidden 表明对请求资源的访问被服务器拒绝了。服务器端没有必要给出详细的拒绝理由,当然也可以在响应报文的实体主体部分对原因进行描述
  • 404 Not Found表示客户端访问的资源路径有问题或者资源问题不存在。
  • 500 Internal Server Error表示服务器出现了 异常.
  • 503 Service Unavailable
    表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入 Retry-After 首部字段再返回给客户端

常见响应头部

  • server: Apache-Coyote/1.1—>> 服务器版本号
  • Set-Cookie:JSESSIONID=ECA8005D1235BBB6B9CFCC338A8206FD; Path=/03test; HttpOnly
  • Content-Type: text/html;charset=utf-8响应字符集,告诉浏览器以什么样的字符集解码;
  • Content-Length: 265 响应体长度
  • Date: Fri, 23 Jun 2017 13:45:01 GMT 发送日期 少8个小时;
  • Expires: -1、Cache-control:no-cache、Pragma:no-cache三个响应头一起使用, 表示禁止浏览器缓存当前页面. 每个浏览器厂商对认识的禁止头不同因此三个一起使用。

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

 以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

 
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

HTTP请求格式

<request-line>
<headers>
<blank line>
[<request-body>]
说明:第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本.
紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息.
之后是一个空行必须要有这个空行,无论有没有主体.
再后面可以添加任意的其他数据[称之为主体(body)].
请求头格式.png

请求行

请求行分为三个部分:请求方法、请求地址和协议版本

请求方法
HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。
最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

请求地址
URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。
组成:<协议>://<主机>:<端口>/<路径>
端口和路径有时可以省略(HTTP默认端口号是80)

请求协议
HTTP版本有1.0和1.1两个版本, 1.0版本建立连接后立即断开,下次访 问需要再次建立连接
1.1版本 建立连接后可以不用断开,直到不发送信息后 才断开节约了资源

请求方法空格请求地址空格协议版本【最后才有一个回车换行,之前都不能有

采用nc模拟HTTP GET请求

GET / HTTP/1.1
host: www.baidu.com

复制上述代码到命令行,如下
请求头.png

采用nc模拟HTTP POST请求

POST / HTTP/1.1
Host:www.baidu.com
Content-Type:application/x-www-form-urlencoded 
content-Length:11



name=17nyy
  1. Content-Type:application/x-www-form-urlencoded 为规定写法,必须这样写服务器才知道这是POST数据。
  2. content-Length:11为要发送的字节长度,必须写明,写明后发送的POST数据超过的字节数将无法接受。

POST请求.png

请求头headers

  1. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8表示客户端可以接受的内容类型,多个值使用;分号隔开q=0.9 表示权重优先级,/表示可以接受任意类型内容;
  2. Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3表示客户端可以接受的语言
  3. User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64x64; 浏览器信息,例如使用的是网井的内核, windows64位系统;
  4. Accept-Encoding: gzip, deflate–>>支持的压缩格式
  5. Host: localhost:8888====>访问地址
  6. Connection: keep-alive —>>保持连接 和HTTP1.1版本有关,默认保持3s
  7. Content-Type: application/x-www-form-urlencoded表单提交时才有可能出现,表示表单的数据类型,使用url编码,url编码 % 16位数
  8. Content-Length: 11—>post请求 请求体长度,超过长度不再接收
  9. Upgrade-Insecure-Requests: 1–>>告诉服务器,浏览器可以处理https协议

Gitblog 安装配置依赖于PHP

Linux 查看当前版本信息

[root@localhost opt]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

php5.6 安装

PHP在 5.3.3 之后已经把php-fpm并入到php的核心代码中了。 所以php-fpm不需要单独的下载安装。
要想php支持php-fpm,只需要在编译php源码的时候带上 --enable-fpm 就可以了

yum安装php的依赖库

[root@localhost php-5.6.3]# yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel
[root@localhost php-5.6.3]# tar -zxvf php-5.6.3.tar.gz

[root@localhost php-5.6.3]# cd php-5.6.3/

[root@localhost php-5.6.3]#./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir=/usr/lib64

[root@localhost php-5.6.3]#make  //这一步比较久

[root@localhost php-5.6.3]# make install

然后就安装到了 /usr/local/php 目录下

加入到环境变量

[root@localhost php-5.6.3]# vim /etc/profile

//加上
[root@localhost php-5.6.3]# export PATH=$PATH:/usr/local/php/bin
//保存退出
[root@localhost php-5.6.3]# source /etc/profile

[root@localhost php-5.6.3]# /usr/local/php/bin/php -v
//查看php拓展模块
[root@localhost php-5.6.3]# /usr/local/php/bin/php -m 
 

配置php-fpm

[root@localhost php-5.6.3]# cp /usr/local/php/etc/php-fpm.conf.default php-fpm.conf 
[root@localhost php-5.6.3]# vi php-fpm.conf //找到以下配置项(大概25行), 配置如下
 
pid = run/php-fpm.pid

### 启动
[root@localhost etc]# /usr/local/php/sbin/php-fpm

nginx配置解析php

在 server 下找到

[root@localhost etc]# vi /usr/local/nginx/conf/nginx.conf

server
{
    listen       80;
    server_name localhost;
    root /opt/wwwroot/gitblog; //这里一定要有,不然css/js没有办法加载
    index index.php index.html index.htm  default.html default.htm default.php;
    location ~ .*/\.(css|js)$ {
        expires -1;
    }

    location / {
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php?$1 last ;
                break;
            }
    }

    location ~* ^/(doc|logs|app|sys)/ {
            return 403;
    }
    
    location ~ \.php$ {
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        root /opt/wwwroot/gitblog; # 绝对路径配置到html下
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params; 
    }

$document_root 代表当前请求在root指令中指定的值:

重启nginx和gitblog 配置

#没有报错,说明重启成功
/usr/local/nginx/sbin/nginx -s reload

#验证php是否配置成功
在 /usr/local/nginx/html 目录下编辑 vi index.php

<?php
echo phpinfo();
?>
 
[root@localhost wwwroot]# tar -zxvf gitblog-2.3.2.tar.gz 

[root@localhost wwwroot]# mv gitblog-2.3.2.tar.gz gitblog

添加友情链接

5.jpg

如上图,如果你想在右下角添加链接,可以从后台的-控制台-外观-sidebar.php文件,找到文件末尾处的标签对:

`

 <section class="widget paddingall">
    <h5 class="widget-title"><?php _e('友情链接'); ?></h5>
    <ul class="widget-list">
        
        <li><a href="https://air-project.github.io/">github</a></li>
        <li><a href="http://dy.17nyy.com">一起影视</a></li>
        <li><a href="http://bbs.17nyy.com">一起分享</a></li>
    </ul>
  </section>

`

添加天气

注意:在Typecho博客中显示天气,以本站17nyy.com为例

首先,进入https://www.seniverse.com注册

按照自己的喜好自定义样式
3.jpg

自定义完成后安装代码将会在下面生成
4.jpg

复制到header.php对应的位置,刷新即可。