1、HTTP:超文本传输协议——HyperText Transfer Protocol

  • 互联网上应用最广泛的一种网络协议
  • 一个客户端和服务端请求和应答的标准(TCP)

2、请求

请求行(请求方法 路径 协议)

头信息(格式为key:value)

空行

主体信息(可选,发送内容)

 

例子如下:

POST /test.php HTTP/1.1

Host:localhost

Content-Type:application/x-www-form-urlencode

Content-length:5

 

age=3

 

3、响应

响应行(协议 状态码 状态文字)

响应头信息(格式为key:value)

空行

主体信息(可能没有)

 

例如如下:

HTTP/1.1 200 OK

Content-Type:text/html

Content-length:5

 

hello

 

4、请求方法有哪些?

  • GET/POST/HEAD/PUT/TRACE/DELETE/OPTIONS...
  • 这些请求方法虽然HTTP协议里都有规定,但Webserver未必允许或支持
  • HEAD:和GET基本一致,只是有返回内容
  • TRACE:用了代理上网,可用其测试代理是否修改HTTP请求
  • OPTIONS:返回服务器可用的请求方法

 

5、状态码、状态文字

  • 状态码:用来反应服务器响应情况
  • 状态文字:用来描述状态码的,便于观察
状态码 定义 说明
1XX 信息 接收到请求,继续处理
2XX 成功 操作成功收到、理解和接受
3XX 重定向 为了完成请求,必须采取进一步措施
4XX 客户端错误 请求的语法有错误或不能完全被满足
5XX 服务端错误 服务器无法完成明显有效的请求

 

6、常见状态码及其描述

状态码 状态描述
200  服务器成功返回网页
 301/2  永久/临时重定向
304  未修改
307  重定向中保持原有的请求数据(可解决重定向POST表单丢失问题)
404  请求的网页不存在
503  服务器暂时不可用
500  服务器内部错误

 

 

7、修改默认重定向状态码

  • 默认:header('Location:网址');
  • 修改:header('Location:网址',true,301)

 

8、Socket

  • 其是应用层与TCP/IP协议通信的中间软件抽象层,是一组接口;
  • 通过Socket接口应对复杂网络间通信,以符合指定的协议

 

9、php函数用http协议实现接口类

定义接口及其方法:

interface proto{

function conn($url);

function get();

function post($arr);

function close();

...

}

使用接口:

class http implements proto{...};

PHP相关函数:

  • parse_url:解析URL,返回器组成部分;
  • fsockopen:打开一个网络连接或者一个Unix套接字连接;
  • fwrite:写入文件(可安全用于二进制文件);
  • fread:读取文件(可安全用于二进制文件);
  • fclose:关闭一个已打开的指针;
  • feof:测试文件指针是否到了文件结束的位置

 

10、HTTP Referer

  • 其是header的一部分,向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器可以获得一些信息用于处理;
  • Referer的正确英语拼法是referrer,早期拼写错误,有些规范修正了;
  • 直接在浏览器上输入地址进去,则没有referer

 

11、配置Apache服务器,用于图片防盗

原理

  • 在WEB服务器层面,根据HTTP协议的Referer头信息判断;
  • 如果来自站外,则统一重写到一个很小的防盗链提醒图片。

具体步骤

打开Apache的httpd.conf文件,重写模块mod_rewrite(利用搜索功能,去掉前面的#),重启服务器;

在需要防盗的网站或目录,写.htaccess文件;

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]

RewriteCond %{REQUEST_REFERER} localhost [NC]

RewriteRule .* no.png

欢迎留言