vue-cli開発時のajaxドメイン間の詳細な解決方法
5241 ワード
目的:vue-cliで構築したプロジェクトを使用して、開発時にバックグラウンドインタフェースにアクセスしてデータを取得しようとすると、ドメイン間で問題が発生します。
config/index.jsでは以下の構成を行う
ajaxリクエストを行う場合、アドレスのうち/apiで始まるリクエストアドレスはいずれもターゲットアドレスとして解析され、targetはあなたが望むバックグラウンドインタフェースアドレスです.
proxyTable: {
'/api': {
target: 'https://188.188.18.8',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
vue-resource呼び出しの例
this.$http.get('/api/v4/user/login', [options]).then(function(response){
//
}, function(response){
//
});
axios呼び出し例
axios({
method: 'get',
headers: {'Accept': '*/*'},
url: '/api/v4/user/login',
data: options
})
.then(function (response) {
console.log(response.data)
})
.catch(function (error) {
console.log(error)
})
ドメイン間原理():
ドメイン間はブラウザで禁止されており、サービス側はドメイン間を禁止していない.
我々のhttpリクエストは,最初からブラウザによって開始され,ローカルサービス側によって開始されるようになったが,サービス側からサービス側へのデータ伝送にはドメイン間問題が存在しないため,解決した.
エージェントが設定されていない場合の通信原理:ローカルファイル-ブラウザ-リモートサービス側エージェントが設定されている場合の通信原理:ローカルファイル-ブラウザ-ローカルサービス側-リモートサービス側
説明の原理:
構成でtargetを構成する項目:target:'https://188.188.18.8’インタフェースが呼び出された場合、例えば、上の
vue-resource
例.最初のアドレスパラメータは、/api/v4/user/login
であり、ローカルサーバによってhttps://188.188.18.8/v4/user/login
に自動的に解析されます.これは私たちが必要とするアドレスです.ブラウザでページを開く.ajaxを介してリクエストを開始すると、ローカル・サービス・エンドのアドレス(通常は
localhost:8080
または127.0.0.1:8080
)が先にこのリクエストを受信し、ローカル・サービス・エンドはこのリクエストのアドレス文字列を分析します.アドレス文字列の前の部分が/api
である場合、ローカルサーバはapiインタフェースの文字列を一度に置き換え、https://188.188.18.8/v4/(構成アドレス)+user/login(インタフェース呼び出し方法の詳細アドレス)、ターゲットアドレス(https://188.188.18.8/v4/).サーバ上の、現在のサーバ上のファイルが要求を開始し、サーバ上の他のものを取得することは、ドメイン間ではありません.