フロントエンド開発者として、私たちは頻繁にバックエンドとインターフェースをとりますが、ドッキングプロセス中に常にクロスドメインの問題に遭遇します。その場合、どのように解決すればよいでしょうか?
この記事では、 angualr
使用してエージェントapi
ドッキングのトピックを説明します。 【おすすめ関連チュートリアル:「Angularチュートリアル」】
まず、クロスドメインとは何かを理解しましょう。
クロスドメイン
の簡単な理解:协议、域名(ip地址)、端口
の 3 つの部分の任意一个
のurl
と現在のページが異なる場合、それはクロスドメインです。
私のサイトhttps://jimmyarea.com
例に挙げます。
要求されたアドレスは | クロスドメインですか | ? | |
---|---|---|---|
jimmyarea.cn | は | 異なる | |
アドレス | を | 持って | |
い | ます | 。 | プロキシ |
現時点では、プロキシを使用して、さまざまな環境のapi
アドレスをローカルで共同デバッグできます
。
まず、プロジェクトのルート ディレクトリに新しいファイルproxy.conf.json
を作成します。
例としてインターフェイス リクエストhttps://jimmyarea.com/api/public/article?page=-1
を取り上げます。
{ "/api": { "ターゲット": "https://jimmyarea.com/", "changeOrigin": true、 「安全」: false、 "パスリライト": { "^/api": "/api" } }target
は
target
のアドレス、 pathRewrite
エージェントのプレフィックスの書き換えです。
プロキシ ファイルの作成が完了したら、プロキシを有効にする必要があります。 package.json
にコマンド ラインを 1 つ追加し、開発環境でのデバッグに使用されることを示します。
「スクリプト」: { "dev": "ngserve --proxy-config=proxy.conf.json",npm run dev を
実行
npm run dev
てプロジェクトを開始し、エージェントを起動します。プロキシ ファイルが変更されるたびに、コマンド ラインを再起動して、
ことを確認する
必要がありますarticle
article.service.ts
の内容は次のとおりです。
import { Injectable } from '@angular/core' ; // http クライアントインポート { HttpClient } から '@angular/common/http' @Injectable({ 提供対象: 'ルート' }) エクスポートクラス ArticleService { コンストラクタ( プライベート http: HttpClient ) { } // 記事リストを取得 getArticleList() { return this.http.get('/api/public/article', { //戻り値の型responseType: 'json', //リクエストパラメータ params: { ページ: -1 } }) }上記の
リクエスト
の場合、ページ上のアドレスはhttp://localhost:4200/api/public/article?page=-1
です。実際にアクセスされるアドレスはhttps://jimmyarea.com/api/public/article?page=-1
です。 https://jimmyarea.com/api/public/article?page=-1
。 user-list.component.ts
で呼び出して確認できます。
ngOnInit():void { this.articleService.getArticleList().subscribe({ 次: (データ: 任意) => { コンソール.ログ(データ) }、 エラー: () => {} }) // ... プログラム
が実行されると、コンソールに次のネットワーク リクエストが表示されます。
よかったですね、バックエンドから与えられたアドレスを完全にプロキシしてデバッグできます。プロキシは複数のアドレスをプロキシできます。リーダーは複数のプロキシ アドレスを書き込んで検証できます~
[終了]