详解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 相关文章推荐
JQuery 常用方法基础教程
Feb 06 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
Node.js的基本知识简单汇总
Sep 19 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
详解微信小程序中组件通讯
Oct 30 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 Javascript
JavaScript实现Tab选项卡切换
Feb 13 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
使用webpack打包koa2 框架app
2018/02/02 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
搞笑的获奖感言
2014/08/16 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
校运会新闻稿
2015/07/17 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Ajax实现异步加载数据
2021/11/17 Javascript
解决Redis启动警告问题
2022/02/24 Redis