需要解决不安全的XMLHttpRequest端点请求

时间:2017-02-15 作者:pixelsandcode

我正在WordPress中构建一个聚合器,它使用新的API从特定站点获取帖子。大多数(如果不是所有的话)这些站点都没有SSL,因此也没有HTTP。当然,我得到的是“混合内容:页面[xxx]是通过HTTPS加载的,但请求了一个不安全的XMLHttpRequest端点[yyy]。此请求已被阻止;必须通过HTTPS提供内容。”

为了记录在案,我正在利用posts API拉入提要,即“http://somesite.com/wp-json/wp/v2/posts“”

我尝试了各种CORS方法(在functions.php、CORS plugins中设置标题,您可以随意选择),以及向允许的源站点添加源站点:

add_filter( \'allowed_http_origins\', \'add_allowed_origins\' );
function add_allowed_origins( $origins ) {
    $origins[] = \'http://somesite.com\';
    return $origins;
}
我没有其他网站,所以我不能很好地坚持让他们获得SSL证书。但似乎我被卡住了,除非有人有我没有尝试过的修复?感谢您的帮助。

1 个回复
SO网友:nibnut

我认为您唯一的选择是在您自己的站点上构建一个小型代理,这是一个PHP函数,您可以将想要获取的URL传递给它。对您自己的站点的调用(ajax调用)将使用与您的站点相同的协议。

PHP代码接收ajax调用,返回并获取远程内容(使用file_get_contents 或cURL),并将响应的内容作为其ajax调用响应返回。

这并不漂亮,你会因此受到速度的打击,但你现在完全绕过了浏览器的安全警告。。。

希望这有帮助!

相关推荐

如何在WordPress REST API响应中按父帖子ID筛选自定义帖子类型的子帖子?

我有两种自定义帖子类型:question 和answer. “问题”是分层的,它们是回答的父帖子,是子帖子。对于每个答案,都有一个家长的问题。当有人提出一个问题时,给出的每个答案都正确地归因于同一个问题。这在网站上已经做得很好了。当我构建应用程序时,我可以输入所有问题,但当涉及到答案时,我似乎无法按家长的问题过滤掉答案。所有问题都可以这样获得:https://domain.com/wp-json/wp/v2/questions对于答案,我使用自定义端点和以下代码:add_action( \'rest_ap