1

展開している製品の一部として、クライアントはコンテンツとデータにアクセスするためにサーバー上のリモートAPIにアクセスする必要があります。それにもかかわらず、いくつかの理由と一部のクライアントでは、ページ全体がサーバー上にあるソリューションは望ましくありません(理由には、デザインの制御が含まれますが、ほとんどの場合SEOであり、このコンテンツを「自分のドメイン」で利用できるようにする必要があります)。 。他の問題があるため、APIサーバー側にアクセスするスクリプトは望ましくありません。

私の考えは次のとおりです(そして、他の人が代替案を提案できるように、その欠陥を指摘します):

1)特定のURIパスからすべてのトラフィックを取得するクライアントサーバーでホストされる単純なスクリプトを作成します(他のフレームワークルーターと同様に、キャッチオールスクリプト)。つまり、/ MyApp/*です。このスクリプトは常に単一のコード、「ローダーjavascriptとスタイリング」を返します...

2)上記のスクリプトから返されたjavascriptを使用して、URLを抽出し、目的のパス/ MyApp / [*]の後でURIを処理し、JSONPまたはCORSの通常のajaxを使用して外部呼び出しに送信すると、戻り値は適切にスタイル設定されて表示されます。

これにより、/ MyApp/abcや/MyApp/defなどのURLはブラウザソースに同じhtml/jsを持ちますが、JSはajax呼び出しから異なるデータをロードするため、異なるコンテンツを表示します...

これは良い解決策のように思えますが、唯一の欠点は、私の理解では、googleや他の検索エンジンがabcとdefからコンテンツにアクセスできず、「ローダーjavascriptとスタイリング」にしかアクセスできないことです(十分に明らかですが、 arentはJSを実行する予定です)...

したがって、これは#よりも優れています!URLを台無しにすることはありませんが、それでもJSに依存するため、検索エンジンに対応していません...

サーバーの制限により、curlなどの最小要件を課すよりも、単純な「キャッチオール」ページを作成し、クライアント側からAPIを呼び出したいと思います。さらに、この方法でエンドユーザーのIPアドレスをより簡単に作成できます(ただし、より複雑なプロキシを作成できます。これにより、クライアントのサーバーへのインストールがはるかに困難になります)...

サーバー側からAPIに接続せずにこれを達成する方法はありますか?

4

1 に答える 1

0

この IMO を実行する最も簡単な方法は、すべてのリモート要求を処理する AJAX コントローラー (MVC 設計を想定) を用意することです。コントローラーの各アクションが JSON を返すようにすると、サーバー側の呼び出しでデータに簡単にアクセスできます。

それ以外の場合は、#! を使用しています。ソリューション(あなたが好きではない、そして当然のことです..)、またはJSONPを使用する(面倒です)。

于 2012-06-18T15:41:40.167 に答える