做者:顏亦浠@毛豆前端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
}
}
複製代碼
根據實際需求,還能夠添加一些其餘的指令,好比: