【问题标题】:enable CORS to call JSON REST from Cordova App启用 CORS 从 Cordova 应用程序调用 JSON REST
【发布时间】:2016-07-03 13:59:23
【问题描述】:
我正在用 apache cordova 制作一个应用程序......我需要从 wordpress 网站上发帖。
在你说它是重复的之前,请阅读以下几点:
所以,我安装了 Rest Api v2:http://v2.wp-api.org/
像这样启用 cors:
< ? header ( " Access- Control-Allow -Origin : * " ) ; ? >在主题的header.php中,甚至在wp-content/plugins/json-api/singletons/api.php
我已经尝试安装这个:https://wordpress.org/plugins/wp-cors/
-
为 GET REST API 调用此方法:
jQuery.ajax({
type: "GET",
url: "myURL",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, status, jqXHR) {
alert("suucess");
}
});
结果总是一样的,firebug返回我说CORS被锁定了,所以我不能从外部提出要求......我该如何解决??
【问题讨论】:
标签:
json
wordpress
cordova
rest
cors
【解决方案1】:
您好,不需要将它添加到您的主题标题中,只需将以下代码添加到 json_api_init 内的 wp-content/plugins/json-api/json-api.php 文件中() 函数
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
}
// Accept Cross Domain Transfer.
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers:{$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
【解决方案2】:
我已经解决了将DataType: "json" 更改为DataType: "jsonp"
解决方法:将DataType设置为jsonp。