WordPress REST API BasicAuth 保护下获取文章教程

WordPress REST API BasicAuth 保护下获取文章教程

本教程详细介绍了如何在wordpress环境中,利用`wp_remote_get()`函数访问受basicauth保护的远程wordpress站点的rest api以获取文章数据。文章将深入讲解如何通过设置http请求头中的`authorization`字段,将base64编码的用户名和密码传递给api,并提供完整的代码示例。同时,教程也强调了在使用basicauth时的注意事项和潜在的安全考量。

通过 wp_remote_get 访问 BasicAuth 保护的 WordPress REST API

在WordPress开发中,我们经常需要从其他站点获取数据。当目标站点配置了BasicAuth认证来保护其REST API时,标准的wp_remote_get()函数调用将无法直接获取数据。本教程将指导您如何扩展wp_remote_get()的功能,使其能够处理BasicAuth认证。

理解 wp_remote_get 与 BasicAuth

wp_remote_get()是WordPress核心提供的用于执行HTTP GET请求的函数,它是对WP_Http类的封装。此函数允许您通过一个参数数组来定制请求,包括设置HTTP头信息。

BasicAuth是一种简单的HTTP认证方案,它要求客户端在请求头中发送用户名和密码。具体来说,Authorization头的值格式为Basic后跟Base64编码的username:password字符串。

实施 BasicAuth 认证

要通过wp_remote_get()发送BasicAuth凭据,我们需要在请求的$args参数中添加一个headers数组,并在其中设置Authorization头。

以下是实现这一功能的关键代码片段:

 array(        'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),    ),);// 使用 wp_remote_get 发送带有 BasicAuth 头的请求$response = wp_remote_get( 'https://your-target-site.com/wp-json/wp/v2/posts?per_page=2', $args );// ... 后续处理响应的代码?>

集成到获取文章函数中

现在,我们将上述BasicAuth逻辑集成到原有的获取文章函数中。

 array(            'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),        ),        // 可以根据需要添加其他参数,例如超时设置等        // 'timeout'     => 10,        // 'redirection' => 5,        // 'httpversion' => '1.0',        // 'blocking'    => true,        // 'sslverify'   => false, // 在开发环境中可能需要禁用,生产环境强烈建议启用    );    // 发送带有 BasicAuth 认证的 GET 请求。    $response = wp_remote_get( $api_url, $args );    // 如果请求出错,返回。    if ( is_wp_error( $response ) ) {        error_log( 'WP_Remote_Get Error: ' . $response->get_error_message() );        return '';    }    // 获取响应体。    $posts = json_decode( wp_remote_retrieve_body( $response ) );    // 如果没有返回内容,返回。    if ( empty( $posts ) ) {        return '';    }    // 如果存在文章。    if ( ! empty( $posts ) ) {        // 遍历每篇文章。        foreach ( $posts as $post ) {            // 格式化日期。            $fordate = date( 'n/j/Y', strtotime( $post->modified ) );            // 显示带有链接的标题和文章日期。            $allposts .= 'link ) . '" target="_blank">' . esc_html( $post->title->rendered ) . '  ' . esc_html( $fordate ) . '
'; } return $allposts; } return ''; // 确保在没有文章时返回空字符串}// 示例用法:// 请替换为您的目标站点信息和认证凭据$target_api_url = 'https://www.your-target-site.com/wp-json/wp/v2/posts?per_page=2';$api_username = 'your_api_user';$api_password = 'your_api_pass';// 调用函数获取文章// echo get_posts_via_rest_with_basic_auth( $target_api_url, $api_username, $api_password );?>

注意事项

安全性: 直接在代码中硬编码用户名和密码存在安全风险,尤其是在公共可访问的源代码中。更好的做法是将这些凭据存储在WordPress的常量、数据库选项或环境变量中,并在需要时安全地检索它们。用户权限: BasicAuth通常用于保护整个API端点,但目标WordPress站点上的REST API访问权限可能还需要与特定用户角色关联。确保您使用的BasicAuth凭据对应一个在目标站点上拥有读取文章权限的WordPress用户。API 访问级别: 即使使用了BasicAuth,某些高度敏感的API端点(例如管理设置)可能仍需要更高的认证机制(如OAuth)或特定的插件(如Basic Authentication handler)来处理,但对于获取公开或受限文章通常Authorization头就足够。错误处理: 在实际应用中,务必对wp_remote_get()的响应进行充分的错误检查,包括is_wp_error()、HTTP状态码(wp_remote_retrieve_response_code())以及JSON解码结果。SSL 验证: 在生产环境中,始终确保启用SSL验证(sslverify参数默认为true)。在开发环境中,有时为了方便会暂时禁用,但这会降低安全性。

总结

通过在wp_remote_get()函数的$args参数中正确设置Authorization HTTP头,我们可以有效地访问受BasicAuth保护的WordPress REST API。这种方法简单直接,适用于许多需要从外部WordPress站点获取数据的场景。然而,开发者应始终关注安全最佳实践,并根据目标API的具体要求和敏感性,选择最合适的认证策略。

以上就是WordPress REST API BasicAuth 保护下获取文章教程的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1340234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Vue.js应用中动态生成带预设设计的PDF教程
上一篇 2025年12月13日 03:40:25
WooCommerce:为新客户订单自动添加管理员备注
下一篇 2025年12月13日 03:40:38

相关推荐

  • PHP:高效检查多维数组中是否存在重复的嵌套项

    本文将探讨如何在 php 中有效检查一个多维数组是否已包含具有相同嵌套项的元素。针对 `in_array()` 函数在处理复杂数组时的局限性,我们将介绍通过迭代和直接比较嵌套子数组的方法,确保在添加新数据前避免重复,从而维护数据结构的唯一性和完整性。 在 PHP 开发中,我们经常需要处理包含复杂数据…

    2026年8月28日
    100
  • laravel表单请求(Form Request)如何使用_Laravel表单请求Form Request使用方法

    Laravel的Form Request用于分离验证与授权逻辑。1. 使用artisan命令生成请求类;2. 在authorize中设置权限,rules中定义规则;3. 可自定义messages错误信息;4. 控制器直接注入使用,自动验证;5. 可通过prepareForValidation预处理数…

    2026年8月28日
    000
  • 使用Workerman实现WebSocket服务

    使用workerman实现websocket服务的步骤包括:1) 使用简洁的api快速搭建websocket服务器,只需几行代码;2) 处理连接建立、消息接收和连接关闭的回调函数;3) 优化连接管理、消息处理和错误处理;4) 注意资源管理和垃圾回收,以提升性能。 你想知道如何使用Workerman实…

    2026年8月28日
    000
  • Word怎么把文本框和图片组合在一起_Word对象组合与层叠顺序调整

    可通过组合功能将文本框与图片合并为整体进行操作,依次选中后右键选择“组合”;若显示异常可调整层叠顺序或使用选择窗格管理对象层级,需要编辑时再取消组合。 如果您在Word文档中插入了文本框和图片,但无法将它们作为一个整体移动或调整位置,可能是由于对象未组合或层叠顺序不正确。以下是解决此问题的步骤: 本…

    2026年8月28日
    100
  • 铁路12306电子发票可以开专票吗_铁路12306电子发票专票开具方法

    铁路12306开具的电子发票为全面数字化电子发票,具备抵扣功能,无需专票。1、发票号码20位,含年度、行政区划等编码。2、包含购买方、旅客身份、行程及票价信息。3、可通过App或车站窗口获取,扫码填写企业信息后提交生成。4、购票人或代办人可代为乘车人申请开票。 如果您需要为铁路出行费用进行增值税抵扣…

    2026年8月28日
    100
  • Word文档怎么调整图片透明度_Word文档图片透明度设置方法

    Word中可通过“设置图片格式”面板的“填充”选项调整图片透明度,适用于背景或水印场景。2. 选中图片后,在“图片格式”选项卡中使用“颜色”和“更正”功能可间接改变视觉透明感。3. 右键打开“设置图片格式”窗格,选择“图片或纹理填充”,通过拖动“透明度”滑块精确设置0%到100%的透明程度。4. 将…

    2026年8月27日
    100
  • 海棠书屋热门小说地址网_海棠书屋无广告免费言情小说入口

    海棠书屋热门小说地址网是https://www.haitangshuwu.com,该平台收录大量言情、玄幻、悬疑等类型小说,支持多种筛选方式与个性化阅读设置,提供流畅且无广告的阅读体验。 海棠书屋热门小说地址网在哪里?这是不少书迷朋友都关注的,接下来由PHP小编为大家带来海棠书屋无广告免费言情小说入…

    2026年8月27日
    200
  • DNS是什么意思_DNS是什么

    dns解析缓慢可通过更换公共dns(如114.114.114.114、8.8.8.8、223.5.5.5)、清除本地dns缓存(如windows执行ipconfig /flushdns)和检查网络环境来优化;dns记录类型包括1. a记录(域名指向ipv4地址)、2. cname记录(域名别名,指向…

    2026年8月27日
    300
  • Piti插件如何智能生成封面页_Piti插件智能生成封面页教程

    首先启用Piti插件中的智能生成封面页功能,输入主副标题后系统将推荐多种模板,用户可选择并自定义颜色字体,最后支持手动更换背景图片以完成个性化设计。 如果您在使用Piti插件时希望快速生成美观且符合内容主题的封面页,但不清楚如何操作,可以通过插件内置的智能识别功能自动匹配标题、风格与图像元素。以下是…

    2026年8月27日
    200
  • 使用Java将单词编码为数字序列

    本文详细介绍了如何使用Java将一个单词根据给定的字母表编码为数字序列。通过示例代码,展示了如何处理大小写问题,以及如何正确地按照单词的原始顺序进行编码。同时,还提供了将编码结果转换为字符串的方法,以便于后续处理和展示。 ### 单词编码实现在许多应用场景中,我们需要将单词按照一定的规则进行编码,例…

    2026年8月27日
    100
  • 千岛小说官方站点入口 千岛小说官网直达链接

    千岛小说官方站点入口是https://www.qiandaoshu.com/,该平台提供全网书籍检索、多线路书源及个性化阅读设置,并支持跨设备数据同步与本地文档导入功能。 千岛小说官方站点入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来千岛小说官网直达链接,感兴趣的网友一起随小编来瞧瞧…

    2026年8月27日
    500
  • 怎么给VSCode配置Java_VSCode搭建Java开发环境与项目设置教程

    答案:配置VSCode写Java需安装JDK和Java扩展包,设置环境变量与运行时路径,可高效开发并管理多项目。 要在VSCode里愉快地写Java代码,其实比你想象的要简单,核心就是两步:先搞定Java开发工具包(JDK),再安装VSCode官方提供的Java扩展包。这两样到位,大部分基础开发场景…

    2026年8月27日
    100
  • Potplayer怎么调整音频延迟_Potplayer音频延迟调整的详细方法

    音画不同步可通过调整音频延迟解决。1、用Ctrl+方向键实时微调;2、右键音频偏移自定义毫秒值;3、F5进入滤镜设置启用音频同步并配置参数;4、切换或加载外部音轨重新同步。 如果您在使用PotPlayer播放视频时遇到音画不同步的问题,可能是由于音频延迟导致的。通过调整音频延迟设置,可以有效改善这一…

    2026年8月27日
    100
  • Win10开启Administrator超级管理员账户教程

    该问题的核心在于Windows应用程序默认要求用户账户控制(UAC)的支持,即使在普通账户下禁用了UAC提示,也不影响这类程序的运行。然而,在Windows 10的管理员账户中,默认并未启用UAC功能。因此,在Administrator账户下无法直接运行Windows应用程序。 不过,通过稍作调整注…

    2026年8月27日
    000
  • 智能客服系统怎么搭建_基于Dialogflow的客服机器人配置

    智能客服系统怎么搭建_基于Dialogflow的客服机器人配置智能客服系统怎么搭建_基于Dialogflow的客服机器人配置智能客服系统怎么搭建_基于Dialogflow的客服机器人配置智能客服系统怎么搭建_基于Dialogflow的客服机器人配置

    答案:搭建基于Dialogflow的智能客服系统需创建Agent、定义意图与实体、配置上下文和履行,通过Webhook集成后端,并持续优化。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 搭建智能客服系统,尤其是基于Dialogflow的客…

    2026年8月27日 用户投稿
    100
  • 谷歌浏览器为什么书签栏会无故消失_谷歌浏览器书签栏消失原因

    书签栏不显示可能因设置关闭、扩展冲突或配置文件损坏。首先检查“显示书签栏”选项并使用快捷键Command+Shift+B恢复;若无效,进入chrome://extensions/禁用所有扩展后逐一排查;仍无法解决时,备份并重命名Default文件夹以重建用户配置;最后可通过替换Bookmarks文件…

    2026年8月27日
    300
  • win10网络和共享中心打不开怎么办_win10网络共享中心异常修复方法

    首先重置Winsock并重启,接着检查Network Connections等关键服务是否启动,再运行sfc /scannow修复系统文件,必要时修改注册表AllowInsecureGuestAuth为1,最后重启Windows资源管理器进程。 如果您尝试打开Windows 10的网络和共享中心,但…

    2026年8月27日
    100
  • choco 安装 和 mkcert 本地https

    原文链接:https://blog.spiritling.cn/posts/4cb12659/ Choco命令行安装 直接拷贝执行即可,注意需要管理员身份运行 cmd 安装: 代码语言:javascript代码运行次数:0运行复制 @”%SystemRoot%System32WindowsPower…

    2026年8月27日
    100
  • win11怎么禁用Aero晃动窗口最小化功能_Win11关闭晃动窗口最小化功能的方法

    首先通过组策略或注册表禁用Aero Shake功能,具体步骤包括使用gpedit.msc启用“关闭Aero Shake”策略,或在regedit中创建NoWindowMinimizingShortcuts并设值为1,最后重启生效。 如果您在使用Windows 11时,发现通过晃动窗口可以快速最小化其…

    2026年8月27日
    000
  • DDR5 标准年度更新:最高支持 9200 MT/s 速率

    10 月 15 日消息,当地时间周二,jedec 协会正式推出 ddr5 spd 年度标准更新,发布最新版本 jesd400-5d ddr5 串行存在检测(spd)内容规范 1.4 版。 此次更新主要引入了三项关键技术支持,具体包括: 拓展对 DDR5-9200 内存速率的支持增加 SOCAMM2 …

    2026年8月27日
    000

发表回复

登录后才能评论
关注微信