做者:颜亦浠@毛豆前端javascript
本地开发过程当中,最常遇到的就是出现跨域,没法请求的问题。如何解决在开发中遇到的跨域问题,今天整理了4种解决方法,供你们参考。前端
跨域出于浏览器的同源策略的限制,浏览器自己会限制跨域请求(严格来讲,只是限制跨域的读操做)。那么何为跨域呢?非同源请求均为跨域,即:若是两个请求的协议、域名、端口号只要有一个不一样,即为非同源即为跨域。java
通常多用于本地自测或者先后端开发部署均为分离的状况node
在通常项目中都会有webpack对应的开发环境的配置文件:webpack.dev.js,在配置项中加入ProxyTable的配置项便可:webpack
proxy: {
'/api': {
changeOrigin: true,
target: 'http://******.*****.com',
}
}
复制代码
若是先后端前缀不匹配或者后端前缀不统一的状况,能够增长pathRewrite属性来统一:nginx
proxy: {
'/EntryApp': {
changeOrigin: true,
target: 'http://******.*******.com',
pathRewrite: {"^/EntryApp": "/EntryApp"}
},
}
复制代码
1.cookie丢失,接口没法访问git
2.post请求报403错github
SwitchHosts是一个管理、快速切换Hosts小工具,软件开源,能够实现一键切换Hosts配置。SwitchHosts须要管理本机的ip和端口的映射,因此须要以管理员身份运行。web
打开SwitchHosts以后,须要在Myhost当中配置对应的映射,当左手边处于打开状态的时候,文件是处于只读的状态,须要编辑的话,就须要让文件处于关闭状态,不一样环境还能够分文件配置,直接照下图配置便可:express
1.端口号默认为80,若是不是,须要配置上对应的端口号
2.浏览器会有先考虑代理工具的代理。
uuaper是百度提供的一款基于nodejs,用于解决前端跨域问题的工具。具体的安装与配置能够去npm官网查找Uuaper,使用中须要结合nodejs,并须要具备自动认证功能:
var express = require('express');
var app = express();
var uuaper = require('uuaper');
app.use('/api', new uuaper({
target: 'http://xxx.xxx.com/',
debug: true,
auth: {
server: 'http://xxx.baidu.com/login?',
username: 'xxx',
password: 'xxx',
}
}));
复制代码
Nginx是一个免费的,开源的高性能的HTTP和反向代理服务器。
一般,线上先后端分开部署时,用nginx比较多。
nginx.conf是主配置文件,有若干个部分组成,每一部分都用{}区分。主要包括:
nginx解决跨域的基本方法是在sever中配置proxy_pass:
// 前端服务的域名为 fe.**.com
// 后端服务的域名为 dev.**.com
server {
listen: 80,
server_name: fe.**.com,
location / {
proxy_pass dev.**.com
}
}
复制代码
根据实际需求,还能够添加一些其余的指令,好比: