Skip to content

小小前端

明月本无心,行人自回首。

Menu
  • 前端开发
  • 编程技术
  • SQL语句
  • Linux
  • 生活/旅行
  • JSEditor
  • MiniBarCMS
  • About
  • 隐私政策
Menu

WordPress WP REST API 插件开启 Access-Control-Allow-Origin

Posted on 2015年7月12日2015年7月12日 by king2088

WP REST API是一个json插件,这个插件非常强大,可以通过javascript或者其他编程语言跨域访问WordPress的相关信息。但是当我使用时却发现不论怎么使用都是出现No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
1、小日本给出的解决方法就是在模板文件中的function.php中添加以下代码(以下代码的意思就是为WordPress头部添加一个Access-Control-Allow-Origin)


function add_allow_header( $headers ) {
if ( ! is_admin() ) {
$headers['Access-Control-Allow-Origin'] = 'http://localhost';//请将此域名修改成你自己允许跨域访问的域名,或者直接将域名改为*,*代表所有域名都可以直接跨域访问。
$headers['Access-Control-Allow-Credentials'] = 'true';
return $headers;
}
}
add_filter( 'wp_headers', 'add_allow_header' );

不过我尝试了,没有通过。依然无望中。
2、WP开发者网站上也有人提过这个问题,当然给出的解决方法和小日本的方法差不多


当然这个的做法也是没有用的。
3、我一再搜索,终于搜索到了另一个解决办法,尝试了,但是也是失败了。这位老外给出的解决方法如下:
找到json-rest-api/lib/class-wp-json-posts.php大概190行左右的代码
$response->header( 'Last-Modified', mysql2date( 'D, d M Y H:i:s', $post['post_modified_gmt'] ) . 'GMT' );
在此代码下面输入
$response->header('Access-Control-Allow-Credentials:*')
当然这样的解决方法也是不正确,也是无用功的!
4、最终解决方法
在无奈之下,自己只有去寻找更好的解决方法了,无奈之下将WP REST API的相关代码看了一遍,才发现原来在json-rest-api/plugin.php里面早就已经有了相应的代码,我们只需要对其进行修改即可。
我们查找function json_send_cors_headers( $value )
就可以看到如下代码:

function json_send_cors_headers( $value ) {
$origin = get_http_origin();
if ( $origin ) {
header( 'Access-Control-Allow-Origin: '+$origin);
header( 'Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE' );
header( 'Access-Control-Allow-Credentials: true' );
}
return $value;
}

我们将header( 'Access-Control-Allow-Origin: '+$origin);直接将这个代码修改为header( 'Access-Control-Allow-Origin: *');即可实现所有域名及时本地都可以跨域访问个人WordPress。

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

分类

近期文章

  • cordova-plugin-camera在某些android机型中拍照或选择文件时闪退出错的解决办法 2019年10月24日
  • JavaScript nodeJS base64加密解密url参数 2019年10月15日
  • 利用expressJS编写reset api 2019年4月13日
  • angular4 + http拦截器 2019年3月21日
  • ionic navCtrl.pop如何传递参数给上一个页面 2018年11月16日
  • ionic3搭建开发/测试环境 2018年10月25日
  • ionic2、3双击硬件back按键退出应用 2018年10月24日
  • VMware安装Mac OS High Sierra 10.12及高版本无法全屏 2018年8月24日

近期评论

  • 手表资讯发表在《ReactJS环境搭建》
  • king2088发表在《ionic中使用热更新插件cordova-hot-code-push》
  • 重阳节的诗句发表在《常用的sql语句》
  • 新郎致辞发表在《PHP代码实现WordPress相关文章的几种方法》
  • 霸道总裁发表在《vsftpd 提示 unrecognized service 解决办法》

归档

标签

Ajax Android Angular APP Cordova CSS css3 express html5 ionic Java javascript jQuery Linux loading mac Mac OS mongodb MySQL node nodejs PHP react SQL SSH VirtualBox vue vue-cli win10 WordPress WP REST API 主题 兼容性 前端 备份 插件 数据库 数组 服务器 正则表达式 浏览器 热更新 目录 组件 错误
2023年 4月
一 二 三 四 五 六 日
 12
3456789
10111213141516
17181920212223
24252627282930
« 10月    
© 2023 小小前端 | Powered by Superbs Personal Blog theme