[Ionic] 用 PHP 解决 AngularJS 跨域请求和数据接收问题

以 Ionic 官方的 Sidemenu 例子为例,做如下修改即可:

1、解决 AngularJS 跨域 POST 问题:
修改 controller.js 文件,在:

下边增加如下配置:

增加这一配置的原因是PHP服务器端不能接收 AnjularJS 标准的 Content-Type: application/json 请求,因此我们这里改成和 jQuery 一样的 application/x-www-form-urlencoded 类型。

另外 withCredentials 是选项是否允许 Cookies 跨域,useXDomain 是否允许跨域请求。

2、HTML部分,这部分只是对 sidemenu 的 login.html 加了一些用于显示服务器端的调试信息:

3、服务器端PHP文件,采用 CORS 跨域解决方案:

这一部分的关键是:
1)header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
这一行指定了服务器端允许跨域请求,并且使用来路域名作为允许的作用域;

2)header('Access-Control-Allow-Credentials: true');
服务器端允许 Cookies 跨域;

另外,由于 PHP 接收的数据是如下类型的:

而实际上它可以接收的 $_POST 类型应该是:

因此我们这里采用

直接获取原始 input 数据,然后用:

进行解析获得相应数据。

参考文献:
1)https://www.mxp.tw/2014/05/27/%E7%95%B6-angularjs-post%E6%96%B9%E6%B3%95%E7%A2%B0%E4%B8%8Aphp/
2)http://my.oschina.net/tommyfok/blog/287748
3)http://www.oschina.net/translate/submitting-ajax-forms-the-angularjs-way

Add a Comment

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