当前位置: 首页 > news >正文

PHP(13)HTTP协议

PHP(13)HTTP协议

  • 一、HTTP请求
    • 1. 请求行
    • 2. 请求头
    • 3. 请求体
  • 二、HTTP响应
    • 1. 响应行
    • 2. 响应头
  • 三、设置HTTP响应
  • 四、模拟HTTP请求

一、HTTP请求

1. 请求行

  • 请求行独占一行。
  • 形式:请求方式 资源路径 协议版本号
    GET /index.php HTTP/1.1

2. 请求头

  1. Host:请求服务器的主机地址。
  2. Accept:当前请求能够接收服务器返回的类型(MIME类型)
  3. Accept-Language:接受的语言。
  4. User-Agent:客户浏览器的一些信息。

3. 请求体

  • 只有POST请求会有请求体。
  • 基本格式:资源名字=数据&资源名字=数据

二、HTTP响应

1. 响应行

  • 形式:协议版本号 状态码 状态信息
    HTTP/1.1 200 OK
    1. 200 ok:成功
    2. 403 Forbidden:没权限访问
    3. 404 Not Found:未找到页面
    4. 500 Server Internal Error:服务器内部错误。

2. 响应头

  1. 时间: Wed, 15 Feb 2023 11:23:39 GMT
  2. 服务器:Server: nginx
  3. 内容长度:Content-Length: 55
  4. 内容类型:Content-Type: text/html; charset=utf-8

三、设置HTTP响应

  • php中通过header函数来实现修改HTTP响应。
  • 注意事项:header设置响应体之前不要有任何输出。
  1. Location:立即重定向,一旦见到此协议项,不再向下解析。header('Location:/day10/upload_file02/index.html');
  2. Refresh:定时重定向,响应体会被解析。header('Refresh:5;url=/day10/upload_file02/index.html');
  3. Content-type:内容类型,MIME类型。
    header("Content-type:text/html;charset=utf-8");
  4. Content-disposition:内容类型,MIME扩展类型,通知浏览器不解析直接下载。header('Content-disposition:attachment;filename=f.jpg');

四、模拟HTTP请求

  • cURL是一个功能强大的开源库,支持HTTP、FTP、TELENT等协议。
  • 用于防盗链。

步骤:

  1. 开启cURL扩展。php.ini => extension=curl
  2. 建立连接:curl_init() => 激活一个cURL连接功能
  3. 设置请求选项:curl_setopt() => 设定选项,更多的设定选项看手册。
  4. 执行请求:curl_exec() => 执行选项(与服务器发起请求),得到服务器返回的内容。
  5. 关闭连接: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);

在这里插入图片描述

http://www.lryc.cn/news/8013.html

相关文章:

  • 基于支持向量机 (SVM) 用php实现预测气温
  • MySQL(五)
  • Linux常用命令2
  • 『C/C++养成计划』Visual Studio Code编辑器配置(外观通用型扩展Minmal)
  • 设计模式(适配器模式)
  • 在基于全志D1s的芒果派麻雀上运行国产开源rt-smart系统
  • 【代码随想录训练营】【Day15】第六章|二叉树|层序遍历|226.翻转二叉树|101.对称二叉树
  • 基于圆展开自适应三边测量算法的室内定位
  • 使用中断子系统实现对LED灯的控制
  • 《爆肝整理》保姆级系列教程python接口自动化(十五)--参数关联接口(详解)
  • 【JDK8】MyBatis源码导入Idea
  • 三层交换机DHCP中继
  • C++之RALL机制
  • 回溯算法章末总结
  • 【SpringBoot】为异步任务规划线程池
  • SAP ABAP 输出结果带有空格
  • Opengl ES之踩坑记
  • 设计模式第六讲:责任链模式和迭代器模式详解
  • K8s 架构简介(一)
  • xshell6运行报错:由于找不到mfc110u.dll、MSVCR110.dll无法继续执行代码
  • Baklib知识库管理平台,协助组织提升知识管理水平
  • 一文搞懂core-scheduling核心机制
  • IP地址在金融行业有哪些应用?
  • GT-suite v2016解决许可证过期问题(附新版liscense下载地址)
  • 小红书商业笔记与普通笔记区别是什么?小红书笔记有哪几种
  • DataWhale-统计学习方法打卡Task01
  • Java面试——Spring 事务
  • Python语言零基础入门教程(十九)
  • 重生之我是赏金猎人-SRC漏洞挖掘(一)-某SRC测试系统无脑Getshell
  • Sciter 结合 PReact 实现组件公共逻辑抽离