【发布时间】:2016-05-11 10:18:15
【问题描述】:
情况:
我正在开发一个从 API 接收数据的 Ionic 应用程序。
之前,API 位于 http:// 地址上,一切正常。
然后我们将 API 移至 https:// 并且它不再工作了。 或者,它仍然可以在浏览器中访问它,但不能在手机(或模拟器)中访问。
我不确定可能是什么问题。在控制台日志中,我看到请求的状态为 0。
它可能与白名单、标头或 CORS 相关。我尝试了几种方法,但都没有奏效。
白名单:
之前在 config.xml 中有这个白名单:
<allow-navigation href="http://*/*" />
我已尝试以多种方式对其进行修改,但这并没有解决问题。 例如我尝试过:
<allow-navigation href="https://*/*" />
和
<allow-navigation href="*" />
API 请求:
这是 API 请求的一个示例:
$http.get( 'https://MY_DOMAIN.com/mobile/list_mobile_project/' ,{},{"headers" : {"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8" }})
.success(function(data, status, headers, config)
{
// code
}).
error(function(data, status, headers, config)
{
console.log('Error with the API list_mobile_project');
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
});
API 响应:
这是一个 API 响应示例:
public function list_mobile_project()
{
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
// code
echo json_encode( $project_list );
}
问题:
如何让 API 也能在 HTTPS 上工作?
如果是 CORS 相关问题,如何在服务器端启用?
【问题讨论】:
-
您的服务器是否支持 CORS?此外,在浏览器中,https url 的证书显示任何错误或警告?
-
浏览器中没有错误。关于服务器中的 CORS 支持我不知道。
-
@johnnyfittizio 在浏览器中,您将能够无错误地获得响应,您可能会在与 AJS 一起使用它时获得此 CORS,因此请尝试启用 CORS用于服务器端的 https。您从哪个平台获取 API? ,如果它的 C# 我可以帮助你启用它
-
@johnnyfittizio 还有一点我想告诉你,每个响应,甚至是错误 500,都必须附加 CORS 标头。如果服务器没有将 CORS 标头附加到错误 500 响应,则 XHR 对象不会解析它,因此 XHR 对象内部不会有任何响应正文、状态或任何其他响应数据。
-
@johnnyfittizio 经过一番研究后,这里是link,如果 $https 返回状态 0 它与 Angular 端无关,它与浏览器端有关,对此的解决方案是 @987654322 @
标签: android ios angularjs https ionic-framework