详解VueJs前后端分离跨域问题


Posted in Javascript onMay 24, 2017

使用vue-cli搭建的vue项目

可以使用在项目内设置代理(proxyTable)的方式来解决跨域问题

设置配置项的目录在config下的index.js,主要通过配置proxyTable项,设置代理指向你的后台地址

dev: {
  env: require('./dev.env'),
  port: 8085,
  autoOpenBrowser: true,
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
  proxyTable: {
   '/agent': {
    target: 'http://127.0.0.1:7105/',
    changeOrigin: true,
    pathRewrite: {
     '^/agent': ''
    }
   }
  },
  // CSS Sourcemaps off by default because relative paths are "buggy"
  // with this option, according to the CSS-Loader README
  // (https://github.com/webpack/css-loader#sourcemaps)
  // In our experience, they generally work as expected,
  // just be aware of this issue when enabling this option.
  cssSourceMap: false
 }

前端使用vue-resource来发起请求时

//在main.js中设置公用的地址
Vue.prototype.rootUrl = '/agent/';

//在具体page中发起请求的方式
that.$http.post(this.rootUrl + 'login', parms).then(function (response) {
     // 响应成功回调
     console.log(response);
    }, function (response) {
     // 响应错误回调
    });

其他方式搭建的前端项目,通过使用nginx启动前端服务同时配置代理

下列是我的nginx配置文件,不管是通过什么方式搭建的前端项目,构建成功后都会输出一个dist文件,我们只需要将nginx服务目录指向你的dist文件下你项目的入口文件即可

我的文件目录是 root D:\openplatform\portal\webapp\dist; 更改此条配置到你的目录 我入口文件名称是index.html 使用的是vue-cli打包的项目,参考vue-cli npm run build的dist目录,指向那个目录下

#user nobody;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include    mime.types;
  default_type application/octet-stream;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" "$status" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio" $request_time $bytes_sent $request_length';

  log_format main '[$time_iso8601] [$remote_addr] [$request] [$http_user_agent] [$cookie_customerID_cookie_flag] [$args]';

  access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 3;
  gzip_proxied any;
  gzip_types *;

  server {
    listen     80;
    root D:\openplatform\portal\webapp\dist;
    index index.html;

    location / {
       try_files $uri $uri/ @router;
       index index.html;
      }
  location @router {
       rewrite ^.*$ /index.html last;
    }
  location ^~/agent/ {
      proxy_pass  http://127.0.0.1:7105/;
      proxy_redirect  http://127.0.0.1:7105/ /;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 600s;
      proxy_read_timeout 600s;
      proxy_send_timeout 600s;
    }
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}


  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;

  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
js字符编码函数区别分析
Dec 28 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
bootstrap table实例详解
Jan 06 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
May 24 #Javascript
angular directive的简单使用总结
May 24 #Javascript
深入理解JavaScript 参数按值传递
May 24 #Javascript
详解Angular 4.x NgTemplateOutlet
May 24 #Javascript
javascript简单写的判断电话号码实例
May 24 #Javascript
Angular2搜索和重置按钮过场动画
May 24 #Javascript
深入理解react-router@4.0 使用和源码解析
May 23 #Javascript
You might like
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
Vue异步加载about组件
2017/10/31 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python贪吃蛇游戏代码
2020/04/18 Python
Python基本socket通信控制操作示例
2019/01/30 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
PyTorch中的C++扩展实现
2020/04/02 Python
python 检测图片是否有马赛克
2020/12/01 Python
大四自我鉴定范文
2013/10/06 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
市场部经理岗位职责
2014/04/10 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
Java Redisson多策略注解限流
2022/09/23 Java/Android