一、HTTP请求
1. 请求行
- 请求行独占一行。
- 形式:请求方式 资源路径 协议版本号
GET /index.php HTTP/1.1
2. 请求头
- Host:请求服务器的主机地址。
- Accept:当前请求能够接收服务器返回的类型(MIME类型)
- Accept-Language:接受的语言。
- User-Agent:客户浏览器的一些信息。
3. 请求体
- 只有POST请求会有请求体。
- 基本格式:资源名字=数据&资源名字=数据
二、HTTP响应
1. 响应行
- 形式:协议版本号 状态码 状态信息
HTTP/1.1 200 OK- 200 ok:成功
- 403 Forbidden:没权限访问
- 404 Not Found:未找到页面
- 500 Server Internal Error:服务器内部错误。
2. 响应头
- 时间: Wed, 15 Feb 2023 11:23:39 GMT
- 服务器:Server: nginx
- 内容长度:Content-Length: 55
- 内容类型:Content-Type: text/html; charset=utf-8
三、设置HTTP响应
- php中通过header函数来实现修改HTTP响应。
- 注意事项:header设置响应体之前不要有任何输出。
- Location:立即重定向,一旦见到此协议项,不再向下解析。
header('Location:/day10/upload_file02/index.html');
- Refresh:定时重定向,响应体会被解析。
header('Refresh:5;url=/day10/upload_file02/index.html');
- Content-type:内容类型,MIME类型。
header("Content-type:text/html;charset=utf-8");
- Content-disposition:内容类型,MIME扩展类型,通知浏览器不解析直接下载。
header('Content-disposition:attachment;filename=f.jpg');
四、模拟HTTP请求
- cURL是一个功能强大的开源库,支持HTTP、FTP、TELENT等协议。
- 用于防盗链。
步骤:
- 开启cURL扩展。php.ini => extension=curl
- 建立连接:
curl_init()
=> 激活一个cURL连接功能- 设置请求选项:
curl_setopt()
=> 设定选项,更多的设定选项看手册。- 执行请求:
curl_exec()
=> 执行选项(与服务器发起请求),得到服务器返回的内容。- 关闭连接:
curl_close
=> 关闭连接。
- 示例:
<?php
echo "<pre>";
// 建立连接
$ch = curl_init();
// 设置连接对象
curl_setopt($ch, CURLOPT_URL, "http://learn.com/day10/upload_file02/index.html");
// 是否获取请求头
curl_setopt($ch, CURLOPT_HEADER, 1);
// 执行请求
$content = curl_exec($ch);
// 关闭简介
curl_close($ch);