WP_REMOTE_POST和WP_SAFE_REMOTE_POST的区别

时间:2018-02-20 作者:Sam Schneider

的文档wp_remote_post says

在许多情况下,您可能会得到更好的服务wp_safe_remote_post

看看源代码,两者之间唯一不同的一行是wp_safe_remote_post 有以下内容: $args[\'reject_unsafe_urls\'] = true;

This article 这是我找到的最好的解释,似乎表明我唯一应该使用的时间wp_remote_post 是指我对自己的网站进行远程呼叫时。

那么,我还想在其他情况下使用wp_remote_post 还是我应该一直坚持wp_safe_remote_post?

3 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

那么,在任何其他情况下,我是否希望使用wp\\u remote\\u post,或者我是否应该始终坚持使用wp\\u safe\\u remote\\u post?

这两个函数完全相同,除了wp_safe_remote_post() 设置reject_unsafe_urls 参数为true。该参数导致传递URLwp_http_validate_url() 在里面WP_Http::request().

从该函数中,我们看到有一些用例需要使用wp_remote_post() 而不是wp_safe_remote_post().

如果您使用的协议不是http或https*

  • 如果需要传递用户或传入URL
  • 如果您正在发布到本地主机**
  • 如果需要使用80、443或8080以外的端口也可以使用http_request_reject_unsafe_urls 用于传递URL的筛选器wp_http_validate_url() 在HTTP请求中,是否wp_safe_remote_post()wp_remote_post() 被调用。

    [*]如果reject_unsafe_urls 未设置,但仍会传递URLwp_kses_bad_protocol() 允许的协议有http、https和ssl。

    [**]可以使用wp_safe_remove_post() 通过使用http_request_host_is_external 过滤并返回真实值。

    SO网友:Mark Kaplun

    函数是对输入卫生的一种后期尝试,在代码到达该点之前很久就应该发生这种情况。(此时,请求将失败,无法通知用户存在他应该解决的配置问题)。

    您可能应该始终使用它们,并准备好处理由于您尝试访问任何没有“基本”url格式且使用最常见端口号的内容而导致它们失败的情况。

    SO网友:Maxim Sarandi

    什么问题?您找到了所有感兴趣的信息。

    wp_safe_remote_post() 函数注释表示

    使用POST方法从安全HTTP请求中检索原始响应。当向任意URL发出HTTP请求时,此功能非常理想。验证URL以避免重定向和请求伪造攻击。

    我想应该一直使用wp_safe_remote_post. 这很安全。

    结束

    相关推荐

    How deactivate the http-api

    为它提供一个tipp或解决方案来停用WP\\U Http\\U Streams类中的方法request()?我也在脱机服务器上使用WordPress,并让wp\\U debug true用于开发和测试。但是我从函数中得到了很多关于使用http类的警告;例如,在仪表板中读取提要的函数。目前我已经停用了更新主题、插件、核心和cron的所有挂钩;请参阅我的小插件:https://github.com/bueltge/WP-Offline谢谢你的回复