フロントエンドとバックエンドを分離した開発では、フロントエンドがバックエンドの API を呼び出してコンテンツを表示する必要があります。フロントエンドとバックエンドの開発が同じホスト上にある場合、ブラウザの相同性ポリシーの制限により、クロスドメインの問題 (異なるプロトコル、ドメイン名、ポート番号など) が発生し、API インターフェイスを正常に呼び出すことができず、開発に不便が生じます。 APIリクエストのカプセル化 'axios' から axios をインポートします //axios.create は axios インスタンスを作成し、インスタンスの設定を書き込みます。インスタンスを介して送信される後続のすべてのリクエストは、現在の設定の対象となります。const $http = axios.create({ ベースURL: ''、 タイムアウト: 1000、 //ヘッダー: {'X-Custom-Header': 'foobar'} }); // リクエストインターセプターを追加 $http.interceptors.request.use(function (config) { // リクエストを送信する前に何かを実行します return config; }, 関数 (エラー) { // リクエストエラーに対して何かを実行します。 return Promise.reject(error); }); // レスポンスインターセプターを追加 $http.interceptors.response.use(function (response) { // レスポンスデータで何かを行う return response.data; // レスポンスデータのデータ部分を返す }, function (error) { // エラーに対して何らかの処理を実行します。 return Promise.reject(error); }); デフォルトの$httpをエクスポートする API呼び出し関数 エクスポートconst getCourses = () => { $http.get('http://localhost:8080/teacher/courses') を返します } この例では、フロントエンドはポート 8081 を使用し、バックエンドはポート 8080 を使用し、フロントエンドは API を呼び出してデータを要求できません。 Postmanは、このAPIインターフェースが正常であることをテストします 相同性問題をどうやって解決するか?1. vueルートディレクトリに新しいvue.config.jsファイルを作成し、設定します。 vue.config.js ファイル モジュール.エクスポート = { 開発サーバー: { host: 'localhost', //ホスト番号 port: 8081, //ポート番号 open: true, //ブラウザプロキシを自動的に開く: { '/api': { target: 'http://localhost:8080/', //インターフェースドメイン名の変更Origin: true, //クロスドメインですか? ws: true, //Websocketのプロキシですか? secure: true, //https インターフェースかどうか pathRewrite: { //パスをリセット '^/api': '/' } } } } }; 2. APIリクエストを変更する API呼び出し関数 エクスポートconst getCourses = () => { $http.get('/api/teacher/courses') を返します } ここでは、vue.config.jsがインターフェースのドメイン名を設定するので、ここのURLには残りを記述するだけで済みます。 URL 本文
ただし、ここではプロキシを使用しているため、残りの部分(つまり「/teacher/courses」)の前に「/api」を追加して「/api/teacher/courses」を形成します。 この時点で、クロスドメイン問題は解決され、フロントエンドはバックエンドインターフェースからデータを取得して表示することができます。 問題は解決しました! Vue+SpringBoot のフロントエンドとバックエンドの分離におけるクロスドメイン問題についての記事はこれで終わりです。より関連性の高い vue SpringBoot フロントエンドとバックエンドの分離のクロスドメインコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 新しいユーザーを作成し、MySQLに権限を付与する最も簡単な方法
>>: Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)
この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...
この記事の例では、古典的なマインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有し...
現在、2016サーバーは、win2008や2012よりも優れたマルチサイトhttpsサービスをサポー...
参考までに、mysql 5.7.20 / 5.7.21 をダウンロード、インストール、構成します。具...
border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...
目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...
データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...
Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...
目次1. 基本概念2. データベース管理技術の開発3. リレーショナルデータベース(RDBMS)の概...
MySQL 全文検索中国語ソリューション最近、会社のプロジェクトで、データベースで中国語を検索する機...
ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...
nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...
目次質問解決質問この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できな...
例:ヒント:このコンポーネントはvue-cropperの二次パッケージに基づいていますプラグインをイ...
目次トピック分析する使用目的解決:コードは次のように実装されます。分析:配列とポインタ解決:コードは...