Do not fear the unknown —— Master Yi

不要害怕未知的事物 —— 易

新人指南

  1. 项目基于ES6 + React + Webpack 搭建, 兼容IE8+.
  2. 我们推荐使用yarn来做包管理工具,它更快更优雅。
  3. 项目所有依赖写在package.json文件中, 需要先使用 yarn install 安装项目的所有依赖.PS:安装需要Xcode并给予管理权限
  4. 运行 npm run dev 进入开发环境. 会通过webpack-dev-server启动一个本地server, 支持代码热更替.
  5. 本地开发的 host : 127.0.0.1 static.sofund.com matrix.sofund.com
    1. 新版本的开发静态url是static.sofund.com,而实际的接口的请求是matrix.sofund.com
    2. 所有的异步请求由本地 127.0.0.1:9001 发起,通过nginx转发到相应的后端接口,目的是实现前后端的真正分离
  6. 需要 更新 nginx的配置 以解决跨域问题
  7. 如果提交代码时git 报错为 error Unexpected token cons undefined ,请执行git commit -m “sometext” --no-verify
  8. 开发的时候对照着 matrix视觉规范.psd
  9. 代码提交的时候以组件为单位进行提交,并且提交代码审查,
  10. arc land 出现revision错误且无法合并至matrix分支时, 请在 /usr/local/lib/node_modules/arcanist/arcanist/src/land/ArcanistGitlandEngine.php 文件中,186行添加 no-verify
  11. 基于组件化思想,开发前请 注意一下common文件下下的组件,以及common.scss ,灵活复用组件加快开发速度
  12. 开发出现跳转登录页时,需要更新nginx的cookie设置,如下所示。

nginx配置的更改

请在nginx.conf 中添加新的server

代码如下: 请务必核对文件路径是否与自身路径符合

此处监听了2个url,原因是: 5.1

#将此server置于第一个server,以解决IE8接口数据问题

server {
    listen       80;
    server_name  matrix.sofund.com;
    charset utf-8;
    # 静态SVN发布仓库地址
    autoindex       on;
    autoindex_exact_size    on;

    location / {
        add_header "Access-Control-Allow-Origin" "*";
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
        proxy_set_header x-request-filename $request_filename;
        proxy_set_header Cookie "_T=1gGid1Vw; _I=3; JSESSIONID=673B88B560565E23F8261C5D83999323";
        proxy_pass ht tp://10.4.32.134:9000;         
    }
}

server {

    listen       80;
    server_name  static.matrix.com;
    charset utf-8;
    # 静态SVN发布仓库地址
    autoindex       on;
    autoindex_exact_size    on;


    location / {
        root /Users/renren/workspace/gitrepos/external-matrix/MATRIX/dist;
    }

    location /js {
        proxy_set_header x-request-filename $request_filename;
        proxy_pass http://127.0.0.1:9001;
    }

    location ~* \.(?:ttf|eot|woff)$ { #|ttc|otf
        add_header "Access-Control-Allow-Origin" "*";
        root /Users/renren/workspace/gitrepos/external-matrix/MATRIX/dist;
    }

}

本地开发访问接口重定向到login解决方案:

通过以上的nginx配置,我们解决了本地开发时的跨域问题,但是后台提供的API很多时候是需要验证cookie的,意味着发出请求时如果本地域与后台API域不同,浏览器发出的请求中不会携带cookie,则会导致后台程序重定向到登录模块.

那么如何解决这种问题呢?

首先要明白一点,在解决跨域问题时,nginx充当了本地程序与后台服务程序交流的桥梁.请求应当是先被nginx拦截,再由nginx根据其配置转发到相应的真实处理请求的位置.

那么我们只需要让nginx在进行转发请求时携带一些cookie信息就可以了,具体配置如下:

proxy_set_header Host matrix.sofund.com; #设置请求头中的Host字段
proxy_set_header Cookie "_T=aBGtd1XT;_I=57;JSESSIONID=EFC6C79AC08CD63D1D6A23C829E55295"; #设置请求头中的Cookie字段

results matching ""

    No results matching ""