详解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 相关文章推荐
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 Javascript
javascript制作网页图片上实现下雨效果
Feb 26 Javascript
讲解JavaScript中for...in语句的使用方法
Jun 03 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 Javascript
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Web应用开发TypeScript使用详解
May 25 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
PHP输出一个等腰三角形的方法
2015/05/12 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP微信API接口类
2016/08/22 PHP
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
javaScript语法总结
2016/11/25 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
python实现简单的tcp 文件下载
2020/09/16 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
Ajax和javascript的区别
2013/07/20 面试题
综合实践活动总结
2014/05/05 职场文书
2014年底个人工作总结
2015/03/10 职场文书
党组织结对共建协议书
2016/03/23 职场文书