项目中使用了react,当中需要使用fetch来代替ajax。
由于react的create_react_app工具很方便,基本上开箱即用,经过创建项目,输入npm start命令后,便自动监听一个3000的端口,到此前端部分就绪。
具体参考:https://github.com/facebookincubator/create-react-app
后端部分我使用了phalcon。
由于前后端分离,为了方便,我尝试在Nginx中使之同域(前端和后台api的顶级域名相同),但phalcon框架是单入口、react监听3000时候,通过Nginx反向代理,出现js找不到的问题,于是放弃同域的打算。
因此我配置了两个域名:
1、www.xxx.com 2、data.xxx.com
第一个域名用于react部分,端口号是3000(调试用,正式上线是80) 第二个域名用于api,端口号是80
于是乎出现跨域问题。
以下是PHP部分的允许跨域域名访问的设置
header('Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-Type,Accept');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-Type,Accept');
以下是fetch部分的ajax请求