JavaScript - フロントエンドとバックエンドを分離する場合、クロスドメインの問題をどのように解決しますか?
現在、ブログに取り組んでいるときは、フロントエンドとバックエンドの分離を使用し、フロントエンドとバックエンドのロジックを 2 つの別個のリポジトリに配置し、2 つのサーバーにデプロイすることを検討しています。
私のメインのドメイン名は: godtail.cn
(目前使用ghost
、新しいブログを書いています...)
フロントエンドのドメイン名は:
www.godtail.cn
|godtail.cn
|m.godtail.cn
バックエンドのドメイン名は:
api.godtail.cn
しかし、通信中に、跨域
というプロンプトが表示されることがわかりました。そうですね、以前は、メインのドメイン名が同じ場合、ドメインを越えることはできないと考えていました(同じドメイン名と異なるポートもドメインを越えます)。
現在、私が知っている解決策は 2 つあります:
-
JSONP を使用する 正直に言うと、JSONP を使用するとセキュリティ上の問題が発生したり、効率が低下したりする気がします (これら 2 つの点は私の推測にすぎません)。
推測の理由:どのソースからでもアクセスできます。js インジェクションはありますか?
バックエンドとフロントエンドの両方を JSONP で処理する必要があります。 (書くのは楽しくないので、すべてのリクエストは JSONP を使用する必要があります)。
-
バックエンドにクロスドメインヘッダーを追加します
フロントエンド ドメイン名が多数ある場合、多くのドメイン名を追加して維持する必要があります。他のシステムがインターフェイスを要求する必要がある場合、クロスドメイン ヘッダーを追加しますか?対処するのは簡単ではありません...
誰かがより良い解決策を持っていますか?
================【9-22 17:25】======================
さらに、クロスドメインヘッダーを設定すると、内部通話のみのIPを設定できます。外部呼び出しが必要な場合は、古いバージョンのブラウザとの互換性の問題があるかどうかもわかりません。
返信内容:
現在、ブログに取り組んでいるときは、フロントエンドとバックエンドの分離を使用し、フロントエンドとバックエンドのロジックを 2 つの別個のリポジトリに配置し、2 つのサーバーにデプロイすることを検討しています。
私のメインのドメイン名は: godtail.cn
(目前使用ghost
、新しいブログを書いています...)
フロントエンドのドメイン名は:
www.godtail.cn
|godtail.cn
|m.godtail.cn
バックエンドのドメイン名は:
api.godtail.cn
しかし、通信中に、跨域
というプロンプトが表示されることがわかりました。メインのドメイン名が同じ場合、ドメインを越えることはできないと以前は考えていました (同じドメイン名と異なるポートもドメインを越えます)。
現在、私が知っている解決策は 2 つあります:
-
JSONP を使用する 正直に言うと、JSONP を使用するとセキュリティ上の問題が発生したり、効率が低下したりする気がします (これら 2 つの点は私の推測にすぎません)。
推測の理由:どのソースからでもアクセスできます。js インジェクションはありますか?
バックエンドとフロントエンドの両方を JSONP で処理する必要があります。 (書くのは楽しくありませんし、すべてのリクエストは JSONP を使用する必要があります)。
-
バックエンドにクロスドメインヘッダーを追加します
フロントエンド ドメイン名が多数ある場合、多くのドメイン名を追加して維持する必要があります。他のシステムがインターフェイスを要求する必要がある場合、クロスドメイン ヘッダーを追加しますか?対処するのは簡単ではありません...
誰かがより良い解決策を持っていますか?
================【9-22 17:25】======================
さらに、クロスドメインヘッダーを設定すると、内部通話のみのIPを設定できます。外部呼び出しが必要な場合は、古いバージョンのブラウザとの互換性の問題があるかどうかもわかりません。
もちろん、Access-Control-Allow-Origin
をバックエンドに追加しますAccess-Control-Allow-Origin
至于你说的前端域名过多的问题,让后端用点小技巧能处理好的,不麻烦
思路:为 Access-Control-Allow-Origin
添加目标域名 (Origin 请求头
) 而不是写死的域名或 *
あなたが言及したフロントエンドのドメイン名が多すぎる問題については、バックエンドにいくつかのトリックを使用させて処理させてください。面倒なことはしないでください
Access-Control-Allow-Origin
ハードコーディングされたドメイン名または の代わりにターゲット ドメイン名 (<code>Origin request header
) を追加します。 *おおよその実装 (疑似コード):
リーリー
ただし、リクエスト ヘッダーはシミュレートできるため、インターフェイスのリクエスト パラメーターを暗号化し、フロントエンド スクリプトを圧縮して難読化することをお勧めします。
すべてのドメイン名を許可するためにバックエンドにクロスドメイン ヘッダーを追加することを検討し、要件を満たさないドメイン名は直接 404 を返します。
nginx リバース プロキシ...あなたは自分で質問し、自分で答えたことが判明しました...🎜
サーバー側でヘッダー「Access-Control-Allow-Origin:*」を設定します。
これは上で述べたものです。アクセスアドレスを指定できます~
フロントエンドコードを失わないサーバー上でドメイン名を転送します
クロスドメインヘッダーは通常の形式で記述することはできませんか?
最初に採用した方法は、jsonp、callback、そのようなリクエストが多すぎると書くのが面倒になります
2番目の方法は、試してみましたが機能しませんでした、Access-Control-Allow-を設定することです。応答 Origin..*?

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。
