【发布时间】:2014-12-12 05:42:36
【问题描述】:
我知道已经有很多关于 CORS 的问题,但他们似乎没有回答我的问题。
所以我有一个用 Angular 编写的客户端应用程序,它将用于创建一个移动应用程序(使用 Apache Cordova)。 html 文件和 JavaScript 文件将从移动设备加载。
当我模拟它并向我首先得到的 REST API 服务器发送请求时
“请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'http://localhost:82'”。
所以我添加了 header("Access-Control-Allow-Origin: *");在我的 php REST API 服务器中。我无法指定特定域,因为请求将来自移动设备。
现在我得到“当凭据标志为真时,不能在 'Access-Control-Allow-Origin' 标头中使用通配符 '*'。”
我终于找到了解决方案,但我不确定这样保存是否安全。
在我的 php REST API 服务器中,我添加了这个:
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
header("Access-Control-Allow-Headers: *, X-Requested-With, Content-Type");
header("Access-Control-Allow-Methods: GET, POST, DELETE, PUT");
}
请就这种工作方式提出建议。如果它不安全或根本不好,请告诉我如何解决这个问题?
非常感谢!
【问题讨论】:
-
您确定需要设置 Access-Control-Allow-Credentials: true,有关该标头的更多信息:stackoverflow.com/a/24689738/1956540
-
不确定您是否知道,但“凭据标志为真”并不是指响应中的
Access-Control-Allow-Credentials: true标头——它指的是request.withCredentials = true。 (stackoverflow.com/questions/34078676/…)
标签: angular rest cordova ionic-framework cors