详解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 相关文章推荐
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
JavaScript实现网站访问次数统计代码
Aug 12 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
垃圾回收器的相关知识点总结
May 13 Javascript
Moment.js实现多个同时倒计时
Aug 26 Javascript
nuxt静态部署打包相对路径操作
Nov 06 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
Look And Say 序列php实现代码
2011/05/22 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
php微信开发自定义菜单
2016/08/27 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
python实现文件快照加密保护的方法
2015/06/30 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Python get获取页面cookie代码实例
2018/09/12 Python
python能做什么 python的含义
2019/10/12 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python中logger日志模块详解
2020/08/04 Python
大学系主任推荐信范文
2013/12/24 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
2014年车间工作总结
2014/11/21 职场文书
综治目标管理责任书
2015/05/11 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android