总有人间一两风,填我十万八千梦

WordPress 后台HTTPS带有HTTP请求的问题,无法发布,无法预览

PHP Zero、J 916℃ 0评论

由于博客中采用的是CDN实现的HTTPS,也就是说实际的服务器并没有设置支持HTTPS请求,CDN到服务器的通讯依然是HTTP请求。在未使用CDN之前,博客中存在很多的HTTP请求的静态图片资源,我在主题中对输出的内容进行了过滤,将http://xxxx转换为了//xxxx实现了协议自动跟随。

更新了WordPress后,突然发现后台新编辑器的预览、发布、Tag标签搜索却依然使用的是http请求,默认情况下,在https页面中是无法请求http类型资源的,将会提示错误类似于:

/wp-admin/post.php?post= &action=edit&message=4′. This request has been blocked; the content must be served over HTTPS.

这种错误,而在我的WordPress中,这个问题仅存在于后台页面中,这里给出两种解决方案:

方案一

让服务器直接可以HTTPS,不通过使用CDN实现。

方案二

使用 Content-Security-Policy 策略,让浏览器自动将http请求提升为https,代码实现如下:

add_action('admin_head','force_browser_ssl');
function force_browser_ssl(){
    echo '<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">';
}

对于支持Content-Security-Policy的浏览器,在设置后将会自动将http请求提升为https。这里的使用的是admin_head只会作用与后台的<head>区域,如果你需要全局作用,则使用wp_head

转载请注明:悠然品鉴 » WordPress 后台HTTPS带有HTTP请求的问题,无法发布,无法预览

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址