ホームページ ウェブフロントエンド jsチュートリアル vue-cli axiosリクエストメソッドとクロスドメイン処理の使い方

vue-cli axiosリクエストメソッドとクロスドメイン処理の使い方

May 26, 2018 pm 02:00 PM
axios vue-cli 聞く

今回は、vue-cli axios リクエスト メソッドとクロスドメイン処理の使用方法を説明します。 vue-cli axios リクエスト メソッドとクロスドメイン処理を使用する際の 注意事項 について説明します。見て。

  • axiosをインストールします

cnpm install axios --save
ログイン後にコピー
  • axiosを使用したいファイルにaxiosを導入します

main.js文件 :import axios from 'axois'
要发送请求的文件:import axios from 'axois'
ログイン後にコピー
  • config/index.jsファイルにプロキシを設定します

 dev: {   
  proxyTable: {// 输入/api 让其去访问http://localhost:3000/api
   '/api':{  
     target:'http://localhost:3000'//设置调用的接口域名和端口号 ( 设置代理目标)
   },
   '/api/*':{
    target:'http://localhost:3000'
   },
  changeOrigin: true,
   pathRewrite: { //路径重写 
      '^/api': '/' //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://localhost:3002/user/add',直接写‘/api/goods/add'即可
    } 
  }
ログイン後にコピー
、クロス-ただし、この知識は開発環境 (dev) でのクロスドメインの問題を解決します。実稼働環境で実際にサーバーにデプロイされる場合、同じドメインからのものでない場合は依然としてクロスドメインの問題が発生します。起源。

axiosリクエストメソッド

Getリクエスト

 // 向具有指定id的用户发出请求
  axios.get('/user?id=1001')
   .then(function (response) {
    console.log(response.data);
   }).catch(function (error) {
    console.log(error);
   });
  // 也可以通过 params 对象传递参数
  axios.get('/user', {
    params: {
     id: 1001
    }
   }).then(function (response) {//请求成功回调函数
    console.log(response);
   }).catch(function (error) {//请求失败时的回调函数
    console.log(error);
   });
ログイン後にコピー

postリクエスト

  axios.post('/user', {
    userId: '10001' //注意post请求发送参数的方式和get请求方式是有区别的
   }).then(function (response) {
    console.log(response);
   }).catch(function (error) {
    console.log(error);
   });
ログイン後にコピー

追加:

vue middle ax クロスドメインの問題を解決し、iOS でインターセプターを使用する

1. Vue の Axios は、vue.use() メソッド宣言の使用をサポートしていません。 したがって、これを解決するには 2 つの方法があります:

1 つ目: main.js に axios を導入し、それを vue プロトタイプ チェーンのプロパティとして設定して、this.axios をコンポーネント内で直接使用できるようにします

import axios from 'axios';
Vue.prototype.axios=axios;
components:
this.axios({
    url:"a.xxx",
    method:'post',
    data:{
      id:3,
      name:'jack'
    }
  })
  .then(function(res){
    console.log(res);
  })
  .catch(function(err){
    console.log(err);
  })
 }
ログイン後にコピー
ここで注意すべき点は、要求されたデータを axios のデータにコピーするためにこれを使用することは無効であるということです。この問題を解決するには、アロー関数を使用できます。

1. vue cli スキャフォールディング フロントエンドがバックエンド データ インターフェイスを調整するときのローカル プロキシのクロスドメインの問題。たとえば、ローカルホスト http://10.1.5.11:8080/xxx/duty? time=2017-07-07 14 :57:22' は、ドメイン間でのみアクセスできます。直接アクセスすると、「XMLHTTPRequest を読み込めません」と報告されます http://10.1.5.11:8080/xxx/duty?time=2017 -07-07 14:57: 22'。プリフライト要求への応答がアクセス制御を通過しません…

なぜクロスドメインの問題が発生するのですか?これは独自の通信ではないため、詳細については Google にアクセスしてください。ここでは、次のように webpack で proxyTable を設定するだけです:

config/index.js
dev: {
  proxyTable: {
   '/api': {
    target: 'http://10.1.5.11:8080/',//设置你调用的接口域名和端口号 
    changeOrigin: true,   //跨域
    pathRewrite: {
     '^/api': '/'     //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22',直接写‘/api/xxx/duty?time=2017-07-07 14:57:22'即可
    }
   }
ログイン後にコピー
クロスドメインの成功。開発環境 (dev ) はクロスドメインの問題を解決しますが、実際に運用環境のサーバーにデプロイされる場合でも、同じオリジンのサーバー ポートからのものでない場合は依然としてクロスドメインの問題が発生します。デプロイされているのは 3001 で、フロント エンドとバック エンドの共同デバッグが必要です。最初のステップでは、開発環境と開発環境でフロント エンドを個別にテストできます。config/dev.env.js で要求されたアドレス API_HOST を構成します。開発環境では、上記で設定したプロキシ アドレス API を使用し、本番環境では通常のインターフェイス アドレスを使用するため、次のように設定します。 2 つのファイルでそれぞれ次の構成を実行します。

config/dev.env.js:
module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',//开发环境
 API_HOST:"/api/"
})
prod.env.js
module.exports = {
 NODE_ENV: '"production"',//生产环境
 API_HOST:'"http://10.1.5.11:8080/"'
}
ログイン後にコピー
config/dev.env.jsprod.env.js もちろん、開発環境と本番環境の両方で http://10.1.5.11:8080// を直接リクエストできます。構成後、プログラムはテスト中に開発環境か実稼働環境かを自動的に判断し、次のようなアドレスを使用するために任意のコンポーネントで process.env.API_HOST を使用できます。 process.env.API_HOST+ 'user/login', this.form)

次に 2 番目のステップで、バックエンド サーバーはクロス ドメインを構成します。これは、access-control-allow-origin: * はすべてのアクセスを許可することを意味します。要約すると、開発環境では、フロントエンドがクロスドメインにプロキシを構成できます。実際の運用環境では、バックエンドの協力が必要です。ある専門家は、「この方法は ie9 以下では使いにくいです。互換性が必要な場合は、バックエンドのサーバー ポートにプロキシを追加するのが最善の方法です。その効果は開発中に webpack プロキシと同様です。」

1. Axios が get post リクエストを送信する問題

post リクエストを送信するときは、通常、送信するコンテンツのタイプである Content-Type を設定する必要があります。application/json は、json オブジェクトを送信することを指しますが、それを文字列化します。前進。 application/xxxx-form は送信を指しますか? a=b&c=d 形式の場合は、qs メソッドを使用して形式を設定できます。qs は、axios のインストール後に自動的にインストールされます。コンポーネントにインポートするだけです。

const postData=JSON.stringify(this.formCustomer);
'Content-Type':'application/json'}
const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式
'Content-Type':'application/xxxx-form'}
ログイン後にコピー

1. インターセプターの使用

アドレスページにアクセスすると、そのページに再度アクセスする前に再度ログインするよう求められることがあります。これは、トークンが失われているなど、ID 認証が失敗したことを意味します。トークンはまだ存在します ローカルに存在しますが、無効であるため、ローカルにトークン値があるかどうかを単純に判断するだけでは問題を解決できません。このとき、サーバーはリクエスト時に 401 エラーを返し、承認エラー、つまりページにアクセスする権限がないことを示します。

 我们可以在发送所有请求之前和操作服务器响应数据之前对这种情况过滤。

// http request 请求拦截器,有token值则配置上token值
axios.interceptors.request.use(
  config => {
    if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
      config.headers.Authorization = token;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  });
// http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取token
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 这里写清除token的代码
          router.replace({
            path: 'login',
            query: {redirect: router.currentRoute.fullPath}  //登录成功后跳入浏览的当前页面
          })
      }
    }
    return Promise.reject(error.response.data) 
  });
ログイン後にコピー

下面看下

vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一到门槛,会报错XMLHTTPRequest can not load http://40.00.100.100:3002/. Response to preflight request doesn't

pass access control…. 为什么跨域同源非同源自己去查吧,在webpack配置一下proxyTable就OK了,如下 config/index.js

dev: {
  加入以下
  proxyTable: {
   '/api': {
    target: 'http://40.00.100.100:3002/',//设置你调用的接口域名和端口号 别忘了加http
    changeOrigin: true,
    pathRewrite: {
     '^/api': '/'
        //这里理解成用‘/api'代替target里面的地址,
        后面组件中我们掉接口时直接用api代替 比如我要调
        用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add'即可
    }
   }
  }
ログイン後にコピー

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何使用js获取ModelAndView值

如何使用jQuery做出文字超过规定行数自动加省略号

以上がvue-cli axiosリクエストメソッドとクロスドメイン処理の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Jun 24, 2023 pm 05:33 PM

Vue アプリケーションで axios を使用するのは非常に一般的です。axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP クライアントです。開発プロセス中に、「Uncaught(inpromise)Error: Requestfailedwithstatuscode500」というエラー メッセージが表示されることがありますが、開発者にとって、このエラー メッセージは理解および解決が難しい場合があります。この記事ではこれについて説明します

Vue アプリケーションで axios を使用するときに「TypeError: Failed to fetch」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用するときに「TypeError: Failed to fetch」が発生した場合はどうすればよいですか? Jun 24, 2023 pm 11:03 PM

最近、Vue アプリケーションの開発中に、「TypeError: Failedtofetch」エラー メッセージという一般的な問題に遭遇しました。この問題は、axios を使用して HTTP リクエストを作成し、バックエンド サーバーがリクエストに正しく応答しない場合に発生します。このエラー メッセージは通常、ネットワーク上の理由またはサーバーが応答していないことが原因で、リクエストがサーバーに到達できないことを示します。このエラーメッセージが表示された後はどうすればよいでしょうか?以下にいくつかの回避策を示します。

Vue でのデータ リクエストの選択: Axios または Fetch? Vue でのデータ リクエストの選択: Axios または Fetch? Jul 17, 2023 pm 06:30 PM

Vue でのデータ リクエストの選択: AxiosorFetch? Vue 開発では、データ リクエストの処理は非常に一般的なタスクです。データリクエストにどのツールを使用するかを選択することは、考慮する必要がある問題です。 Vue で最も一般的なツールは、Axios と Fetch の 2 つです。この記事では、両方のツールの長所と短所を比較し、選択に役立つサンプル コードをいくつか示します。 Axios は、ブラウザおよび Node.js で動作する Promise ベースの HTTP クライアントです。

Vue アプリケーションで axios を使用するときに発生する「エラー: ネットワーク エラー」の問題を解決するにはどうすればよいですか? Vue アプリケーションで axios を使用するときに発生する「エラー: ネットワーク エラー」の問題を解決するにはどうすればよいですか? Jun 25, 2023 am 08:27 AM

Vue アプリケーションで axios を使用するときに発生する「エラー: NetworkError」の問題を解決するにはどうすればよいですか? Vue アプリケーションの開発では axios を使って API リクエストをしたり、データを取得したりすることが多いのですが、axios リクエストで「Error: NetworkError」が発生することがあります。まず、「Error:NetworkError」の意味を理解する必要があります。これは通常、ネットワーク接続が切断されていることを意味します。

Vue と Axios を効率的に活用してフロントエンド データのバッチ処理を実装する Vue と Axios を効率的に活用してフロントエンド データのバッチ処理を実装する Jul 17, 2023 pm 10:43 PM

Vue と Axios を効率的に活用して、フロントエンド データのバッチ処理を実装します。フロントエンド開発ではデータ処理が一般的なタスクです。大量のデータを処理する必要がある場合、効果的な方法がなければ、データの処理は非常に煩雑で非効率的になってしまいます。 Vue は優れたフロントエンド フレームワークであり、Axios は人気のあるネットワーク リクエスト ライブラリであり、連携してフロントエンド データのバッチ処理を実装できます。この記事では、Vue と Axios を効率的に使用してデータのバッチ処理を行う方法を詳しく紹介し、関連するコード例を示します。

Vue アプリケーションで axios を使用するときに「エラー: xxxms のタイムアウトを超えました」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用するときに「エラー: xxxms のタイムアウトを超えました」が発生した場合はどうすればよいですか? Jun 24, 2023 pm 03:27 PM

Vue アプリケーションで axios を使用するときに「エラー: timeoutofxxxmsexceeded」が発生した場合はどうすればよいですか?インターネットの急速な発展に伴い、フロントエンド技術は常に更新され、改良が重ねられており、Vue は優れたフロントエンド フレームワークとして近年皆様に歓迎されています。 Vue アプリケーションでは、ネットワーク リクエストを行うために axios を使用する必要があることがよくありますが、「エラー: timeoutofxxxmsexceeded」というエラーが発生することがあります。

Vue アプリケーションで axios を使用するときに「TypeError: binding is not a function」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用するときに「TypeError: binding is not a function」が発生した場合はどうすればよいですか? Jun 25, 2023 am 08:31 AM

Vue.js アプリケーションでは、axios を使用するのが非常に一般的です。 Axios は、非同期 HTTP リクエストを簡単に送信できる強力な HTTP リクエスト ライブラリです。ただし、axios を使用すると、いくつかのエラーが発生します。そのうちの 1 つは「TypeError:bindisnotafunction」です。このエラーは通常、axios バージョンが Vue.js と互換性がないことが原因で発生します。このエラーの解決策を見てみましょう。まず必要なのは、

Vue でファイル アップロードを実装するための完全なガイド (axios、element-ui) Vue でファイル アップロードを実装するための完全なガイド (axios、element-ui) Jun 09, 2023 pm 04:12 PM

Vue でファイル アップロードを実装するための完全なガイド (axios、element-ui) 最新の Web アプリケーションでは、ファイル アップロードは基本的な機能になっています。アバター、写真、ドキュメント、ビデオのいずれをアップロードする場合でも、ユーザーのコンピュータからサーバーにファイルをアップロードするための信頼できる方法が必要です。この記事では、Vue、axios、および element-ui を使用してファイルのアップロードを実装する方法に関する詳細なガイドを提供します。 axiosaxios とはプロムベースです

See all articles