Curl 参数详解:实现下载内容直接屏幕输出 – wiki基地


Curl 参数详解:掌控网络请求,实现内容直达屏幕

在现代软件开发和系统管理中,与 Web 服务进行交互是一项基本技能。无论是测试 API、下载文件、自动化任务,还是简单地获取网页内容,命令行工具 curl 都是不可或缺的瑞士军刀。它功能强大、灵活,支持多种协议(HTTP, HTTPS, FTP, SCP, LDAP 等),并提供了丰富的参数来精确控制请求的每一个细节。

本文的核心目标是深入探讨 curl 的一项基础但极其有用的功能:将下载的网络内容直接输出到标准输出(屏幕)。虽然这是 curl 的默认行为之一,但理解相关的参数能让我们更精细地控制输出格式、处理重定向、过滤信息、以及将其无缝集成到脚本和命令行管道中。我们将详细解析与屏幕输出相关的 curl 参数,并通过实例展示其应用。

一、curl 与标准输出 (stdout)

在类 Unix 系统(如 Linux, macOS)中,每个进程默认都有三个标准流:
1. 标准输入 (stdin):进程从中读取数据,通常是键盘输入。
2. 标准输出 (stdout):进程向其写入正常输出,通常显示在终端屏幕上。
3. 标准错误 (stderr):进程向其写入错误或诊断信息,也通常显示在终端屏幕上,但与 stdout 是分开的流。

curl 的设计哲学遵循了 Unix 的“一切皆文件”和管道思想。默认情况下,当你执行一个简单的 curl 请求以下载资源时(例如 curl http://example.com),curl 会将接收到的 响应体 (response body) 内容写入到 标准输出 (stdout)。同时,它会将 进度信息、连接详情和错误消息 写入到 标准错误 (stderr)

这种默认行为非常方便,因为它允许我们:
* 直接在屏幕上查看文本内容(如 HTML, JSON, XML, 纯文本)。
* 使用管道符 |curl 的输出传递给其他命令进行处理(如 grep, jq, sed, awk, less 等)。

示例:默认行为

“`bash

请求一个简单的 HTML 页面

curl http://info.cern.ch/hypertext/WWW/TheProject.html
“`

执行上述命令后,你将在终端上看到该网页的 HTML 源代码。这正是 curl 将响应体输出到 stdout 的结果。

二、核心参数:控制输出目标与内容

虽然默认输出到 stdout 很方便,但有时我们需要更精细的控制。以下是一些关键参数,它们直接或间接地影响着内容是否以及如何输出到屏幕。

1. -o, --output <file>:将输出重定向到文件

这是最常用于 阻止 内容输出到屏幕的参数。它告诉 curl 将响应体保存到一个指定的文件中,而不是 stdout。

“`bash

将 example.com 的 HTML 保存到 index.html 文件,屏幕上只显示进度和错误信息(stderr)

curl -o index.html http://example.com
“`

特殊用法 -o -
-o 参数有一个特殊的值 -(单个连字符)。当使用 -o - 时,它明确指示 curl 将响应体输出到 stdout。这在某些情况下很有用,例如:
* 当脚本或别名可能默认设置了 -o-O 时,用 -o - 可以强制覆盖并输出到屏幕。
* 在复杂的命令组合中,明确指定输出到 stdout 可以提高可读性。

“`bash

明确指定输出到 stdout (效果同默认行为)

curl -o – http://example.com
“`

2. -O, --remote-name:以远程文件名保存

这个参数也用于将输出保存到文件,但它会自动使用 URL 中提取的文件名。它同样会阻止内容输出到 stdout。

“`bash

下载文件并以服务器提供的名称保存 (例如 logo.png),屏幕上只显示进度和错误信息

curl -O https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
“`

总结 -o-O:这两个参数是将输出从 stdout 重定向到文件的主要方式。要实现屏幕输出,通常 使用它们,或者使用 -o - 来显式指定 stdout。

3. -s, --silent:静默模式

这是实现 干净屏幕输出 的关键参数。默认情况下,curl 会在 stderr 上显示进度条和一些连接信息。如果你只想看到纯粹的响应体内容(例如,在脚本中处理 JSON 或纯文本时),-s 参数可以抑制这些额外的输出。

“`bash

默认情况,stderr 会有进度信息

curl http://example.com

使用 -s,屏幕上只剩下纯粹的 HTML (stdout),没有进度条

curl -s http://example.com

将 JSON API 的响应直接通过管道传给 jq 处理,-s 确保只有 JSON 数据被传递

curl -s https://api.github.com/users/octocat | jq ‘.name’
“`

注意-s 会同时抑制进度信息和错误消息(来自 curl 本身,非 HTTP 错误)。

4. -S, --show-error:在静默模式下显示错误

当你使用 -s 静默模式时,如果 curl 自身遇到错误(如无法解析主机、连接超时等)或者 HTTP 请求失败(需要配合 -f),默认情况下错误信息也会被抑制。-S 参数的作用是在 -s 生效的同时,仍然将这些错误消息输出到 stderr。这对于调试脚本非常有用,既能保持 stdout 的干净,又能在出错时获得反馈。

“`bash

尝试访问一个不存在的域名

使用 -s,屏幕无任何输出,也无法知道是否出错 (除非检查退出码 $?)

curl -s http://nonexistent-domain-12345.com

使用 -sS,屏幕无正常输出 (stdout),但 stderr 会显示 curl 的错误信息

例如:”curl: (6) Could not resolve host: nonexistent-domain-12345.com”

curl -sS http://nonexistent-domain-12345.com
“`

5. -f, --fail:对服务器错误静默处理 (不输出错误页面)

当服务器返回 HTTP 错误状态码(如 404 Not Found, 500 Internal Server Error)时,curl 默认仍然会将服务器返回的错误页面(通常是 HTML)输出到 stdout。-f 参数改变了这种行为:如果发生 HTTP 错误,curl不输出任何响应体 到 stdout,并且会以一个非零的退出码(通常是 22)结束。这在脚本中判断请求是否成功时非常有用,避免了处理预期之外的错误页面内容。

“`bash

请求一个不存在的页面 (假设服务器返回 404 页面)

默认情况,会将 404 错误页面 HTML 输出到屏幕

curl http://example.com/nonexistent-page

使用 -f,如果服务器返回 4xx 或 5xx 错误,屏幕上将没有任何输出 (stdout)

curl 会以错误码退出

curl -f http://example.com/nonexistent-page

结合 -s 和 -f:既隐藏进度,又在 HTTP 错误时不输出错误页面

curl -fs http://example.com/nonexistent-page

结合 -fsS:隐藏进度,HTTP 错误时不输出错误页面,但 curl 自身错误会显示

curl -fsS http://example.com/nonexistent-page
“`

对于需要干净地获取内容到 stdout 的场景,-fs-fsS 的组合非常常见。

6. -L, --location:跟随重定向

很多 Web 资源会使用 HTTP 重定向(状态码 3xx)。默认情况下,curl 不会跟随重定向,它只会请求你指定的 URL,并输出该 URL 返回的响应(可能是一个重定向指令和空的响应体)。要获取重定向 最终 指向的资源内容并输出到屏幕,你需要使用 -L 参数。

“`bash

假设 http://google.com 重定向到 https://www.google.com/

不加 -L,可能只输出重定向信息或空内容

curl -s http://google.com

加 -L,curl 会跟随重定向,最终获取 www.google.com 的内容并输出到屏幕

curl -sL http://google.com
“`

在获取网页或 API 数据时,-L 通常是必需的,以确保你得到的是实际内容而非重定向指令。

7. -i, --include:在输出中包含响应头

默认情况下,curl 只将响应体 (body) 输出到 stdout。如果你想 同时 看到响应头 (headers) 和响应体,可以使用 -i 参数。响应头会先于响应体输出到 stdout。

“`bash

输出响应头和响应体到屏幕

curl -i http://example.com
“`

输出会类似这样:
“`
HTTP/1.1 200 OK
Content-Encoding: gzip
Accept-Ranges: bytes
Age: 54321
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Mon, 27 May 2024 10:00:00 GMT
Etag: “3147526947”
Expires: Mon, 03 Jun 2024 10:00:00 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (dcb/7EA2)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 648




Example Domain
… (rest of the HTML body) …

“`

8. -I, --head:仅获取响应头 (发送 HEAD 请求)

如果你只对响应头感兴趣,完全不需要响应体,可以使用 -I 参数。这会让 curl 发送一个 HTTP HEAD 请求,服务器理论上只返回响应头信息。这些头信息会直接输出到 stdout。

“`bash

只获取并显示响应头

curl -I http://example.com
“`

这对于检查资源的 Content-Type、Last-Modified、服务器类型等元数据非常有用,且效率比下载整个响应体高。

9. -D, --dump-header <file>:将响应头保存到文件

-i 不同,-D 参数允许你将响应头 单独 保存到一个文件中,而响应体仍然按照默认(或由 -o 指定)的方式处理。这意味着你可以将响应体输出到 stdout,同时将响应头保存到文件以供后续分析。

“`bash

将响应体输出到屏幕 (stdout),响应头保存到 headers.txt 文件

curl -D headers.txt http://example.com

查看响应头

cat headers.txt
“`

特殊用法 -D -
类似于 -o --D - 指示 curl 将响应头输出到 stdout。但是,要注意,如果同时响应体也默认输出到 stdout,这可能会导致头和体混合在一起,效果类似于 -i。通常 -D - 配合 -o /dev/null(丢弃响应体)或者 -o <file>(将响应体存盘)使用,以单独在屏幕上查看响应头。

“`bash

将响应头输出到屏幕 (stdout),丢弃响应体

curl -s -D – -o /dev/null http://example.com
“`

10. -v, --verbose:详细输出模式

-v 参数用于调试,它会输出大量的详细信息,包括:
* curl 尝试连接的 IP 地址和端口。
* 发送的请求头(以 > 开头)。
* 接收的响应头(以 < 开头)。
* SSL/TLS 握手信息(如果使用 HTTPS)。
* 其他诊断信息。

这些信息绝大部分都输出到 stderr。响应体仍然输出到 stdout(除非被 -o-O 重定向)。因此,-v 不适合用于获取纯净的响应体到屏幕,但对于理解请求过程中发生了什么至关重要。

“`bash

详细模式,大量调试信息输出到 stderr,响应体输出到 stdout

curl -v http://example.com
“`

三、组合参数与实际应用场景

理解了这些核心参数后,我们可以组合它们来满足不同的屏幕输出需求。

场景 1:获取纯净的 JSON API 响应并用 jq 处理

目标:调用一个 API 端点,获取 JSON 响应,只在屏幕上显示特定字段的值,忽略进度和错误页面。

“`bash

-s: 静默模式,无进度条

-L: 跟随可能存在的重定向

-f: 如果 API 返回 4xx/5xx 错误,不输出错误 JSON/HTML,并设置退出码

curl -fsL https://api.github.com/repos/stedolan/jq | jq ‘.description’
``
这条命令会安静地获取 jq 项目的 GitHub API 信息,如果成功,则将纯净的 JSON 数据通过管道交给
jq提取.description字段并输出到屏幕。如果 API 访问失败,屏幕上不会有curl的输出(除非用-Scurl自身出错),jq` 也不会收到输入。

场景 2:快速查看网页标题

目标:获取一个网页的 HTML,并提取 <title> 标签的内容显示在屏幕上。

“`bash

-sL: 静默并跟随重定向

grep -oP: 使用 Perl 兼容正则表达式提取 之间的内容

sed: 清理掉 标签本身

curl -sL http://example.com | grep -oP ‘.*?‘ | sed -e ‘s///’ -e ‘s/<\/title>//’<br /> <code>``<br /> 这里,</code>curl -sL<code>负责将最终页面的 HTML 内容干净地输出到 stdout,后续的</code>grep<code>和</code>sed` 命令在管道中处理这个输出。</p> <p><strong>场景 3:检查资源的 Content-Type 和大小 (不下载)</strong></p> <p>目标:只查看某个 URL 指向资源的响应头,特别是 <code>Content-Type</code> 和 <code>Content-Length</code>。</p> <p>“`bash</p> <h1>-s: 静默</h1> <h1>-I: 发送 HEAD 请求,只获取头信息</h1> <p>curl -sI https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png | grep -iE ‘Content-Type|Content-Length’<br /> <code>``</code>-I<code>确保只获取头,</code>-s<code>隐藏</code>curl<code>的连接信息,头信息输出到 stdout,</code>grep` 过滤出我们关心的两行。</p> <p><strong>场景 4:调试 API POST 请求,查看请求和响应</strong></p> <p>目标:向 API 发送 POST 请求,并在屏幕上查看发送的数据、接收的头和接收的体。</p> <p>“`bash</p> <h1>-v: 详细模式,请求/响应头和诊断信息到 stderr</h1> <h1>-X POST: 指定请求方法</h1> <h1>-H: 添加自定义请求头</h1> <h1>-d: 发送 POST 数据</h1> <h1>响应体仍然会输出到 stdout</h1> <p>curl -v -X POST -H “Content-Type: application/json” -d ‘{“name”: “test”}’ https://httpbin.org/post<br /> <code>``<br /> 在这个例子中,</code>-v<code>提供了调试所需的大部分信息(到 stderr),而 API 的 JSON 响应体则会输出到 stdout。虽然不是纯净的屏幕输出,但对于调试非常有用。如果只想看响应体,去掉</code>-v` 即可。</p> <p><strong>场景 5:下载脚本并直接执行 (需谨慎!)</strong></p> <p>目标:从 URL 下载一个 shell 脚本,并直接通过管道交给 shell 执行。</p> <p>“`bash</p> <h1>-fsSL: 静默、失败时无输出、跟随重定向</h1> <h1>bash: 将从 stdout 接收到的脚本内容作为输入执行</h1> <h1>!!!警告:执行来自不受信任来源的脚本非常危险!!!</h1> <p>curl -fsSL https://example.com/install.sh | bash<br /> <code>``<br /> 这里</code>curl -fsSL<code>确保只有脚本内容(如果成功获取)被输出到 stdout,然后</code>bash` 读取这个输出并执行。<strong>务必只对完全信任的来源使用此模式!</strong></p> <h3>四、处理非文本内容</h3> <p><code>curl</code> 默认将 <strong>所有</strong> 响应体数据转储到 stdout。如果请求的资源是二进制文件(如图片、音频、压缩包),直接输出到屏幕通常会导致终端显示乱码,甚至可能干扰终端的正常行为。</p> <p>在这种情况下,虽然技术上内容仍然被输出到了 stdout,但这通常不是期望的结果。如果你需要处理二进制内容,最佳实践是:<br /> * 使用 <code>-o <file></code> 或 <code>-O</code> 将其保存到文件。<br /> * 如果确实需要通过管道处理,确保管道的下一个命令能够正确处理二进制流(例如,<code>xxd</code>, <code>hexdump</code>, <code>identify</code> (ImageMagick), <code>tar -xzf -</code> 等)。</p> <p>“`bash</p> <h1>尝试将图片输出到屏幕 (可能导致乱码)</h1> <p>curl -sL https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png</p> <h1>正确做法:保存到文件</h1> <p>curl -sLo logo.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png</p> <h1>通过管道交给 ImageMagick 的 identify 命令读取 stdin</h1> <p>curl -sL https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png | identify –<br /> “`</p> <h3>五、高级技巧与注意事项</h3> <ul> <li><strong>字符编码</strong>:<code>curl</code> 不会尝试转换字符编码。如果服务器返回的文本编码与你的终端不兼容,可能会看到乱码。你可能需要将 <code>curl</code> 的输出通过 <code>iconv</code> 等工具进行转换。</li> <li><strong>代理设置</strong>:如果需要通过代理访问网络,使用 <code>-x, --proxy <[protocol://]host[:port]></code> 参数。这不直接影响屏幕输出,但对于成功获取内容是前提。</li> <li><strong>认证</strong>:对于需要认证的资源,使用 <code>-u, --user <user:password></code> (Basic Auth) 或其他认证相关参数。认证失败通常会导致 401/403 错误,结合 <code>-f</code> 可以避免输出错误页面。</li> <li><strong>超时控制</strong>:使用 <code>--connect-timeout</code> 和 <code>--max-time</code> 控制连接和总操作时间,避免长时间阻塞。</li> <li><strong>User-Agent</strong>:某些网站会检查 User-Agent。使用 <code>-A, --user-agent <string></code> 可以模拟浏览器或其他客户端。</li> <li><strong>检查退出码</strong>:在脚本中,即使使用了 <code>-f</code>,也应该检查 <code>curl</code> 的退出码 (<code>$?</code> in bash) 来判断操作是否真正成功。退出码 0 通常表示成功。</li> </ul> <h3>六、总结</h3> <p><code>curl</code> 是一个极其强大的命令行工具,其默认将下载内容输出到标准输出 (stdout) 的行为是其灵活性的基石。通过熟练掌握 <code>-s</code> (静默)、<code>-L</code> (重定向)、<code>-f</code> (失败处理)、<code>-i</code> (包含头)、<code>-I</code> (仅头)、<code>-o/-O</code> (文件输出) 等核心参数,我们可以精确地控制 <code>curl</code> 的输出行为:</p> <ul> <li><strong>默认</strong>:响应体到 stdout,进度和错误到 stderr。</li> <li><strong>获取纯净内容到屏幕</strong>:常用组合 <code>-sL</code> 或 <code>-fsL</code>。</li> <li><strong>包含头信息到屏幕</strong>:使用 <code>-i</code>。</li> <li><strong>仅获取头信息到屏幕</strong>:使用 <code>-I</code>。</li> <li><strong>调试输出</strong>:使用 <code>-v</code> (stderr) 配合默认的 stdout 输出。</li> <li><strong>避免屏幕输出</strong>:使用 <code>-o <file></code> 或 <code>-O</code>。</li> </ul> <p>理解 <code>curl</code> 如何与标准流交互,并善用其丰富的参数集,能让你在命令行上高效地与 Web 世界互动,无论是简单的数据抓取、API 测试,还是复杂的自动化脚本编写,都能得心应手,让网络资源的内容直达你的屏幕或管道中的下一个命令。掌握 <code>curl</code>,就是掌握了命令行上的网络利器。</p> <hr /> </div><!-- .entry-content .clear --> </div> </article><!-- #post-## --> <nav class="navigation post-navigation" aria-label="Post navigation"> <span class="screen-reader-text">Post navigation</span> <div class="nav-links"><div class="nav-previous"><a title="NumPy 官方文档精粹:中文解读与实例 - wiki基地" href="https://wkbse.com/2025/04/23/numpy-%e5%ae%98%e6%96%b9%e6%96%87%e6%a1%a3%e7%b2%be%e7%b2%b9%ef%bc%9a%e4%b8%ad%e6%96%87%e8%a7%a3%e8%af%bb%e4%b8%8e%e5%ae%9e%e4%be%8b-wiki%e5%9f%ba%e5%9c%b0/" rel="prev"><span class="ast-post-nav"><span aria-hidden="true" class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><path d='M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z'></path></svg></span> Previous</span> <p> NumPy 官方文档精粹:中文解读与实例 – wiki基地 </p></a></div><div class="nav-next"><a title="FastAPI ORM 教程:快速入门指南 - wiki基地" href="https://wkbse.com/2025/04/23/fastapi-orm-%e6%95%99%e7%a8%8b%ef%bc%9a%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%e6%8c%87%e5%8d%97-wiki%e5%9f%ba%e5%9c%b0/" rel="next"><span class="ast-post-nav">Next <span aria-hidden="true" class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><path d='M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z'></path></svg></span></span> <p> FastAPI ORM 教程:快速入门指南 – wiki基地 </p></a></div></div> </nav> <div id="comments" class="comments-area comment-form-position-below "> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">发表评论 <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2025/04/23/curl-%e5%8f%82%e6%95%b0%e8%af%a6%e8%a7%a3%ef%bc%9a%e5%ae%9e%e7%8e%b0%e4%b8%8b%e8%bd%bd%e5%86%85%e5%ae%b9%e7%9b%b4%e6%8e%a5%e5%b1%8f%e5%b9%95%e8%be%93%e5%87%ba-wiki%e5%9f%ba%e5%9c%b0/#respond" style="display:none;">取消回复</a></small></h3><form action="https://wkbse.com/wp-comments-post.php" method="post" id="ast-commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">您的邮箱地址不会被公开。</span> <span class="required-field-message">必填项已用 <span class="required">*</span> 标注</span></p><div class="ast-row comment-textarea"><fieldset class="comment-form-comment"><legend class ="comment-form-legend"></legend><div class="comment-form-textarea ast-grid-common-col"><label for="comment" class="screen-reader-text">在此输入...</label><textarea id="comment" name="comment" placeholder="在此输入..." cols="45" rows="8" aria-required="true"></textarea></div></fieldset></div><div class="ast-comment-formwrap ast-row"> <p class="comment-form-author ast-grid-common-col ast-width-lg-33 ast-width-md-4 ast-float"> <label for="author" class="screen-reader-text">Name*</label> <input id="author" name="author" type="text" value="" placeholder="Name*" size="30" aria-required='true' autocomplete="name" /> </p> <p class="comment-form-email ast-grid-common-col ast-width-lg-33 ast-width-md-4 ast-float"> <label for="email" class="screen-reader-text">电子邮箱*</label> <input id="email" name="email" type="text" value="" placeholder="电子邮箱*" size="30" aria-required='true' autocomplete="email" /> </p> <p class="comment-form-url ast-grid-common-col ast-width-lg-33 ast-width-md-4 ast-float"> <label for="url" class="screen-reader-text">网站</label> <input id="url" name="url" type="text" value="" placeholder="网站" size="30" autocomplete="url" /> </p> </div> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="发表评论" /> <input type='hidden' name='comment_post_ID' value='2481' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </div><!-- #comments --> </main><!-- #main --> </div><!-- #primary --> <div class="widget-area secondary" id="secondary" itemtype="https://schema.org/WPSideBar" itemscope="itemscope"> <div class="sidebar-main" > <aside id="block-12" class="widget widget_block"> <h2 class="wp-block-heading">recent post</h2> </aside><aside id="block-10" class="widget widget_block widget_recent_entries"><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://wkbse.com/2025/06/07/%e5%85%a8%e9%9d%a2%e4%ba%86%e8%a7%a3%e9%98%bf%e9%87%8c%e4%ba%91%ef%bc%9a%e6%9c%8d%e5%8a%a1%e4%b8%8e%e4%bc%98%e5%8a%bf%e8%af%a6%e8%a7%a3-wiki%e5%9f%ba%e5%9c%b0/">全面了解阿里云:服务与优势详解 – wiki基地</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://wkbse.com/2025/06/07/%e5%a6%82%e4%bd%95%e8%a7%a3%e5%86%b3-http-400-%e9%94%99%e8%af%af%ef%bc%9f%e4%b8%80%e7%9c%8b%e5%b0%b1%e6%87%82%e7%9a%84%e5%8e%9f%e5%9b%a0%e4%b8%8e%e4%bf%ae%e5%a4%8d%e6%8c%87%e5%8d%97-wiki%e5%9f%ba/">如何解决 HTTP 400 错误?一看就懂的原因与修复指南 – wiki基地</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://wkbse.com/2025/06/07/%e4%b8%ad%e5%9b%bd%e5%85%b1%e4%ba%a7%e5%85%9a%ef%bc%9a%e4%b8%80%e7%af%87%e5%85%a8%e9%9d%a2%e4%bb%8b%e7%bb%8d-wiki%e5%9f%ba%e5%9c%b0/">中国共产党:一篇全面介绍 – wiki基地</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://wkbse.com/2025/06/07/%e8%ae%a4%e8%af%86chrome-for-android%ef%bc%9a%e8%af%a6%e7%bb%86%e4%bb%8b%e7%bb%8d%e4%b8%8e%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97-wiki%e5%9f%ba%e5%9c%b0/">认识Chrome for Android:详细介绍与使用指南 – wiki基地</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://wkbse.com/2025/06/07/%e5%a6%82%e4%bd%95%e4%b8%8b%e8%bd%bd-github-%e9%a1%b9%e7%9b%ae%e4%bb%a3%e7%a0%81-wiki%e5%9f%ba%e5%9c%b0/">如何下载 GitHub 项目代码 – wiki基地</a></li> </ul></aside><aside id="block-15" class="widget widget_block"> <h2 class="wp-block-heading">tag</h2> </aside><aside id="block-13" class="widget widget_block widget_tag_cloud"></aside> </div><!-- .sidebar-main --> </div><!-- #secondary --> </div> <!-- ast-container --> </div><!-- #content --> <footer class="site-footer" id="colophon" itemtype="https://schema.org/WPFooter" itemscope="itemscope" itemid="#colophon"> <div class="site-below-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-full ast-builder-grid-row-tablet-full ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-below-footer-builder"> <div class="ast-builder-grid-row-container-inner"> <div class="ast-builder-footer-grid-columns site-below-footer-inner-wrap ast-builder-grid-row"> <div class="site-footer-below-section-1 site-footer-section site-footer-section-1"> <div class="ast-builder-layout-element ast-flex site-footer-focus-item ast-footer-copyright" data-section="section-footer-builder"> </div> </div> </div> </div> </div> </footer><!-- #colophon --> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/astra\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script>(function(d,z,s){s.src='https://'+d+'/401/'+z;try{(document.body||document.documentElement).appendChild(s)}catch(e){}})('oamoameevee.net',9277804,document.createElement('script'))</script> <div id="ast-scroll-top" tabindex="0" class="ast-scroll-top-icon ast-scroll-to-top-right" data-on-devices="both"> <span class="ast-icon icon-arrow"><svg class="ast-arrow-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" width="26px" height="16.043px" viewBox="57 35.171 26 16.043" enable-background="new 57 35.171 26 16.043" xml:space="preserve"> <path d="M57.5,38.193l12.5,12.5l12.5-12.5l-2.5-2.5l-10,10l-10-10L57.5,38.193z" /> </svg></span> <span class="screen-reader-text">滚动至顶部</span> </div> <script src="https://wkbse.com/wp-includes/js/comment-reply.min.js?ver=6.8.1" id="comment-reply-js" async data-wp-strategy="async"></script> <script id="astra-theme-js-js-extra"> var astra = {"break_point":"921","isRtl":"","is_scroll_to_id":"1","is_scroll_to_top":"1","is_header_footer_builder_active":"1","responsive_cart_click":"flyout"}; </script> <script src="https://wkbse.com/wp-content/themes/astra/assets/js/minified/frontend.min.js?ver=4.8.13" id="astra-theme-js-js"></script> <script id="astra-addon-js-js-extra"> var astraAddon = {"sticky_active":"","svgIconClose":"<span class=\"ast-icon icon-close\"><svg viewBox=\"0 0 512 512\" aria-hidden=\"true\" role=\"img\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" width=\"18px\" height=\"18px\">\n <path d=\"M71.029 71.029c9.373-9.372 24.569-9.372 33.942 0L256 222.059l151.029-151.03c9.373-9.372 24.569-9.372 33.942 0 9.372 9.373 9.372 24.569 0 33.942L289.941 256l151.03 151.029c9.372 9.373 9.372 24.569 0 33.942-9.373 9.372-24.569 9.372-33.942 0L256 289.941l-151.029 151.03c-9.373 9.372-24.569 9.372-33.942 0-9.372-9.373-9.372-24.569 0-33.942L222.059 256 71.029 104.971c-9.372-9.373-9.372-24.569 0-33.942z\" \/>\n <\/svg><\/span>","hf_account_show_menu_on":"hover","hf_account_action_type":"link","is_header_builder_active":"1"}; </script> <script src="https://wkbse.com/wp-content/uploads/astra-addon/astra-addon-67d56dacbda6e5-05240025.js?ver=4.8.14" id="astra-addon-js-js"></script> <script src="https://wkbse.com/wp-content/plugins/astra-addon/assets/js/minified/purify.min.js?ver=4.8.14" id="astra-dom-purify-js"></script> <script id="wp-statistics-tracker-js-extra"> var WP_Statistics_Tracker_Object = {"requestUrl":"https:\/\/wkbse.com\/wp-json\/wp-statistics\/v2","ajaxUrl":"https:\/\/wkbse.com\/wp-admin\/admin-ajax.php","hitParams":{"wp_statistics_hit":1,"source_type":"post","source_id":2481,"search_query":"","signature":"6e5d7154ae2ba96aa8ae96c946e5cea4","endpoint":"hit"},"onlineParams":{"wp_statistics_hit":1,"source_type":"post","source_id":2481,"search_query":"","signature":"6e5d7154ae2ba96aa8ae96c946e5cea4","endpoint":"online"},"option":{"userOnline":true,"consentLevel":"disabled","dntEnabled":false,"bypassAdBlockers":false,"isWpConsentApiActive":false,"trackAnonymously":false,"isPreview":false},"jsCheckTime":"60000","isLegacyEventLoaded":""}; </script> <script src="https://wkbse.com/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.13.4" id="wp-statistics-tracker-js"></script> <script> /(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1); </script> </body> </html><!-- WP Fastest Cache file was created in 1.268 seconds, on 2025年6月7日 @ pm8:27 --><!-- need to refresh to see cached version -->