启用 CORS 从 Cordova 应用程序调用 JSON REST

Posted

技术标签:

【中文标题】启用 CORS 从 Cordova 应用程序调用 JSON REST【英文标题】:enable CORS to call JSON REST from Cordova App 【发布时间】: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被锁定了,所以我不能从外部提出要求......我该如何解决??

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于启用 CORS 从 Cordova 应用程序调用 JSON REST的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 应用签署 apk 后需要 CORS

无法在 ASP.Net Core Web api 中启用 CORS

使用 Google IAP 启用 CORS

Cordova 应用程序的 API 服务器 CORS 白名单

如何在 Sails.js 中为自定义路由启用 CORS

Spring Boot CORS 通过配置启用