900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > vue反向代理解决跨域及部署nginx端口转发解决跨域

vue反向代理解决跨域及部署nginx端口转发解决跨域

时间:2019-04-25 08:49:18

相关推荐

vue反向代理解决跨域及部署nginx端口转发解决跨域

1. 前言

本文是为了解决vue反向代理解决跨域及部署服务器nginx端口转发解决跨域,因为踩了不少的坑,百度了很多,也试了太多的方法,最终得以解决,所以记录一下,希望遇到同样问题的友友们可以高效的解决自己项目中遇到的问题。

2.为什么会出现跨域问题

出于浏览器的同源策略限制,同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同协议(protocol)、主机(host)和端口号(port)

3.什么是跨域

当前url请求另一个url时,协议、域名、端口号三者之间任意一个与当前url不同则视为跨域

4. 非同源策略限制

无法读取非同源网页的Cookie、LocalStorage和IndexDB无法接触非同源的DOM无法向非同源地址发送AJAX请求

5. vue+axios请求接口跨域解决方案

vue开发环境下,使用反向代理解决跨域,本人使用的是vue-cli3 所以生成的项目中没有config文件,我们直接可以在项目的根目录上创建vue.config.js配置文件即可,具体实现如下

modules.exports={devServer:{proxy:{'/test':{target:"/idioms/query",//后台接口地址(你想要获取数据的接口地址)changOrigin:true, //允许跨域pathRewrite:{'^/test':'',// 请求时会多出来/test这个路径,但是我们不需要,通过重写去掉// 当我们请求/test地址时,地址会被解析为/test// 设置pathRewrite时,地址会被解析为}}}}}

6. 反向代理解决跨域的原理

化解跨域原理图:

如果直接去请求只有一个是相同的,肯定跨域

在这里将http://localhost:8080的这个域名转换为,然后再将请求发送到服务器,这样在服务器端到服务器,这样在服务器端收到的请求就是使用;同理,当服务器返回数据的时候,也是先到代理的中间层,将转换成http://localhost:8080,这样在客户端也是在同源下访问了。

7. 将项目部署到nginx服务器

以上内容解决完成之后,我们将项目部署到nginx服务器,这时候属于生产模式了,同时我们需要在vue项目中的main.js中配置默认访问的ip,设置下面代码之后,我们就可以直接用npm run build打包,发布部署了。

import axios from "axios"if(process.env.NODE_ENV==="production"){axios.defaults.baseURL = "你的服务器ip"//生产模式 不同于 开发时}

8. 部署之后项目这时又出现跨域问题

我们需要修改nginx的配置文件,我的nginx为默认的。服务器用的系统是centos的,nginx.conf文件在这个目录下 /usr/local/nginx/conf/nginx.conf,用vim 修改,具体服务器系统是什么的按照相应操作就可,具体如下:

vim /usr/local/nginx/conf/nginx.conf

nginx.conf内容:

server{listen 80;#监听端口server_name localhost;#服务器ip地址location / {#访问上面服务器ip地址时,出现的项目root html;#根目录为htmlindex index.html index.htm;#默认访问的文件}location /test{#访问服务器ip/test时,我们实际访问的是下面代理的urlproxy_pass /idioms/query;#代理设置,我们想要请求的真实接口url}}

我的项目地址是在http://localhost下,我的后台api接口在/idioms/query?请求参数下,显然如果访问就是跨域。这时候,我们通过监听80端口,设置代理当访问/test时,将转发给我的代理去访问。即实现跨域ngnix端口转发实现跨域请求。

9. 总结

vue反向代理以及部署项目到nginx解决跨域的内容讲到这里了,希望可以帮助到大家,大家如果在项目中遇到类似问题了,可以参考一下,是否和我的问题一样。文章内容,有些是摘自于互联网,整理得来的。不忘大佬们的幸苦成果。如有侵权,联系我删除即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。