アプリには次のアーキテクチャがあります。
jQueryMobile Web アプリ --> から JSON を取得 ---> C# で作成された REST API
IIS 6 の仮想ディレクトリに REST API コードを配置しました。モバイル サイトのコードは、Web サイトのルートで実行されているため、大まかなファイル構造は次のようになります。
inetpub/ /index.html myjavascript.js /レスタピ/ web.config Global.asax bin/(DLL の束...)
サーバーは、次のような IP 変換 (実際の IP ではありません...) を持つネットワークの背後にあります。例:
Web サーバーの外部 IP: 121.131.141.50 (URL http://mysite.com/) 内部 IP: 10.210.2.5 サブネット: 255.255.255.0
restapi
Web サーバーからのみアクセスできるようにしたいので、IP によってフォルダーへのアクセスを制限しようとしました。私は IIS アプローチを試し、ディレクトリ セキュリティ設定を設定しました。また、ServiceAuthorizationManager
クラスを使用して Http リクエストでリクエスト IP をチェックするアプローチも試しました。
どちらのアプローチでも同じ結果が得られました。Fiddler を介した実際のサービス呼び出しを制限およびテストして、Web サーバー IP (10.210.2.5) 以外の IP から 401 がスローされることを証明することに問題はありませんでした。また、Webサーバーから実行することもできました(これは望ましい設定です)。
ただし、モバイル サイトの JavaScript がそれを呼び出すと、401 の権限がありません。Javascript コードはクライアント側であるため、restapi は呼び出しがクライアントの IP アドレスからのものであると想定しますが、もちろんブロックされています。
呼び出しが JavaScript が置かれている IP からのものであることを確認するきちんとした方法はありますか?
または、全体を処理するためのより良い方法はありますか?! restapi
:-/ Web アプリに仮想ディレクトリへのアクセスを明確に許可する方法はありますか?