vue20 クロスドメイン プロキシを解決する方法

WBOY
リリース: 2023-05-25 11:10:07
オリジナル
411 人が閲覧しました

Web 開発の継続的な開発と進歩により、ますます多くのフロントエンド テクノロジとフレームワークが広く使用されています。最新の JavaScript フレームワークとして、Vue.js はフロントエンド開発でよく選ばれるようになりました。 Vue.js アプリケーションの開発プロセスでは、クロスドメインがよく発生する問題です。この記事では、Vue.js 2.0 のクロスドメインの問題とその解決策を紹介します。

1. クロスドメインとは

Web アプリケーション開発において、ブラウザーの同一オリジンにより、あるページが 1 つのドメイン名の Web サイトから別のドメイン名のリソースへのアクセスを要求する場合ポリシーの制限により、リソースを正しく取得できません。これをクロスドメインと呼びます。

具体的には、同一生成元ポリシーはブラウザの中核であり、最も基本的なセキュリティ機能です。同一オリジン ポリシーでは、2 つの URL が同じプロトコル、ドメイン名、ポートを持つ場合にのみ相互アクセスを許可する必要があります。そうでない場合は、クロスドメインの問題が発生します。

わかりやすく言うと、1 つの Web サイトを Web サイト A と呼び、もう 1 つの Web サイトを Web サイト B と呼ぶとします。Web サイト A がブラウザを通じて Web サイト B にデータを要求すると、Web サイト B は Web サイト A が存在するドメインにないため、 、デフォルト この場合、ブラウザはこのアクセス要求を拒否します。

2. Vue.js 2.0 のクロスドメインの問題

Vue.js 2.0 はシングルページ アプリケーションであるため、デフォルトの開発環境および運用環境では、開発と運用にローカルの Node.js サーバーが使用されます。テスト中。この場合、クロスドメインの問題が頻繁に発生します。

たとえば、axios を使用して Ajax リクエストを送信し、バックエンド サーバーから JSON データをリクエストします。コードは次のとおりです:

import axios from 'axios' axios.get('http://localhost:8080/api/data') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); });
ログイン後にコピー

上記のコードでは、Ajax リクエストを送信しようとしています。アドレスhttp: //localhost:8080/api/dataのサーバーは GET リクエストを送信しますが、ブラウザーはデフォルトでそのようなクロスドメイン アクセスを許可していないため、操作中にエラーが発生します。 。

3. クロスドメインの問題を解決する方法

クロスドメインの問題を解決するには、プロキシ サーバーを指定し、サーバーをローカルで起動して、すべてのクロスドメインを転送する必要があります。サーバー上位にリクエストします。プロキシ サーバーとバックエンド サーバーは両方とも同じドメイン内にあるため、クロスドメインの問題は発生しません。

Vue.js 2.0 では、webpack-dev-server のproxyTable構成アイテムを使用してプロキシ サーバーを指定できます。 proxyTable はオブジェクトであり、その中の各属性は次の形式のプロキシ ルールです。

proxyTable: { '/api': 'http://localhost:9000' }
ログイン後にコピー

上記のコードでは、/apiで始まるすべてのリクエストを次のアドレスに転送します。 ##http://localhost:9000サーバー上。

4. サンプル コード

次は、proxyTable を使用してプロキシ サーバーを構成する方法のサンプル コードです:

// 代码文件:vue.config.js module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:9000', // 代理目标地址 pathRewrite: { '/api': '' }, // 请求路径重写 changeOrigin: true, // 允许跨域 }, }, }, }
ログイン後にコピー

上記のコードでは、最初に構成する必要があります。 Vue.js 2.0

vue.config.jsファイルをプロジェクトのルート ディレクトリに追加します。これは、開発環境でサーバーを構成するために使用されます。devServerでは、プロキシ ルールを含むオブジェクトであるproxy属性を追加しました。バックエンド API の実際の状況に応じてプロキシ ターゲット アドレスを設定できます (http://localhost:9000など)。

pathRewrite属性を設定して、リクエスト パスの書き換えルールを指定することもできます。たとえば、リクエスト パスが/api/dataの場合、{ '/api': '' }を使用して/apiプレフィックスを削除できます。リクエストのパスは/dataになります。

最後に、クロスドメイン アクセスを許可するために、

changeOrigin属性をtrueに設定する必要もあります。その後、axios を使用してクロスドメイン リクエストを送信できるようになります:

import axios from 'axios' axios.get('/api/data') .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); });
ログイン後にコピー
5. 概要

この記事では、Vue.js 2.0 のクロスドメインの問題とその解決策を紹介します。同一生成元ポリシーの制限により、フロントエンド アプリケーションから他のドメイン名のリソースに直接アクセスすることはできませんが、プロキシ サーバーを使用してこの問題を回避できます。 Vue.js 2.0 では、webpack-dev-server の

proxyTable構成項目を使用して、クロスドメインの問題を解決するプロキシ サーバーを指定できます。

以上がvue20 クロスドメイン プロキシを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!