PES
ZH English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

如何开启通知

此浏览器或网址无法使用通知。请使用支持通知的浏览器,通过安全连接访问PES。

如果通知被屏蔽,请在浏览器设置中允许通知。

  1. 打开地址栏旁的站点设置或浏览器的站点设置,将此网站的通知设为允许。
  2. 在设备设置中允许浏览器发送通知,并检查勿扰模式或专注模式。
  3. 返回PES,刷新页面,然后通过铃铛开启通知。

在iPhone或iPad上,将PES添加到主屏幕,从主屏幕打开后允许通知。

我的学习进度
  1. 人工智能用法
  2. 终端命令
  3. 人工智能进阶
  4. Vibe 编程
  5. 人工智能证书 准备中
  6. 键盘
查看详情
返回 Vibe 编程
VIBE 编程

Web 客户端

所有向服务器开口要东西的一方。

Chrome 是 Web 客户端,一行 curl 也是。这一章里你会亲手写一份 HTTP 请求,把它包成 Shell 脚本,认真学会 curl,最后打开 Chrome 开发者工具,看着同样的文字在眼前飞过。

在终端里做一个 Web 客户端

要最快地相信 HTTP 只是文字,就自己动手打一份请求出来。先把上一主题里的 Shell 服务器跑起来,再开第二个终端,亲手跟它说话。

用 nc 手写一份请求

netcat 连上端口,把你敲的字原样送上线路。打完两行、按两次回车,服务器就会回答 —— 你刚刚亲手做了浏览器的活。

terminal
# connect, then type the two lines below and press Enter once more
nc localhost 8084

GET / HTTP/1.1
Host: localhost

# or send it all at once (printf's \r\n is HTTP's line break)
printf 'GET / HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 8084
  • 结尾那个空行很重要。它告诉服务器请求到此为止,所以你要多按一次回车。
  • HTTP 要求每行以回车加换行结束。手打也能通,是因为多数服务器比较宽容;而 printf 那一版送出的正是标准所要求的样子。
  • Host 那一行是 HTTP/1.1 强制要求的。对着真实站点少写它,通常换回来的是一个错误,而不是页面。

把它包成脚本

既然请求已经只是一句 printf,一个可以反复用的客户端也就是几行的事。下面这份接收主机、端口和路径,送出请求,并把头部和正文分开显示。

client.sh
#!/bin/bash
# usage: bash client.sh localhost 8084 /

HOST=${1:-localhost}
PORT=${2:-8084}
PATH_=${3:-/}

printf 'GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n' "$PATH_" "$HOST" \
  | nc "$HOST" "$PORT" \
  | tr -d '\r' \
  | awk 'BODY { print; next } /^$/ { BODY = 1; next } { print "[header] " $0 }'

tr 去掉 HTTP 留在每行末尾的回车,awk 则在遇到空行之前把每行都标成头部 —— 空行之后的一切都是正文。这跟浏览器开始绘制之前所做的切分完全一样。

把两头一起跑起来

一个终端跑 Shell 服务器,另一个跑这个客户端,你就同时握有一场自己写出来的对话的两端。改一改服务器的响应,客户端立刻就看得见 —— 因为中间再没有别的东西。

回到 Shell Web 服务器

这一栏由你自己标记,这里不打分。

要把这一阶段标记为已理解吗?

目前还不能取消,请在真正理解后再标记。

已标记为理解

这一栏由你自己标记,这里不打分。

学习指南

人工智能

人工智能资格证

学习

Vibe 编程

游戏开发

练习

导师

聊天

论坛

创作

社区

更多

术语词典

选一个你不认识的词吧,可以看到简单的解释和相关术语。

还没有匹配的术语。

选择一个术语即可查看解释。