4

ネットワーク上でホストされ、特定のクライアントに公開されているASP.Netアプリケーションがあります。このクライアントは、自分のサーバーからアプリケーションにデータをインポートできるようにしたいと考えています。データはHTTPリクエストで取得され、CSV形式です。問題は、サーバーをネットワークに公開したくないため、クライアント側でインポートを実行するように要求していることです(すべてのクライアントはサーバーと同じネットワークからのものです)。

したがって、実行する必要があるのは次のとおりです。

  1. 彼らは私たちのサーバーからのインポートページを要求します
  2. ページ上のクライアントスクリプトは、CSV形式のデータを取得するようにサーバーにリクエストを発行します
  3. データはアプリケーションに返送されます

両方のサーバーが同じドメインにある場合、これは問題ではありません。単純な非表示のiframeなどでうまくいきますが、ここで得られるのは、クロスドメインの「アクセス拒否」エラーです。また、JSONまたはXML形式のデータを返すようにデータ形式を変更することも拒否します。

私がこれまでに試し、学んだことは次のとおりです。

  1. 非表示のiframe-「アクセスが拒否されました」
  2. XMLHttpRequest-動作はブラウザのセキュリティ設定によって異なります:動作する可能性がある、セキュリティ警告でユーザーを悩ませているときに動作する可能性がある、またはまったく動作しない可能性があります
  3. 動的スクリプトタグ-JSON形式でデータを返すことができれば機能します
  4. IEクライアントのデータバインディング-同じ「アクセスが拒否されました」エラー

サーバーをアプリケーションに公開したり、データ形式を変更したり、ブラウザーのセキュリティ設定を変更したりしないと不可能だと諦めて言う前に、他に試すことができることはありますか?(ちなみに、DNSトリックはオプションではありません)。

4

5 に答える 5

3

JSON 形式でデータをサーバーできる場合は、JSONPが答えになるかもしれません。それ以外では、クロスドメイン コールで同じオリジン ポリシーの問題が常に発生します。サーバーへの HTTP リクエストを実行するためにサーバー側の呼び出しを行うことを検討しましたか?

于 2009-08-07T11:20:54.907 に答える
2

クライアントには手遅れかもしれませんが、両方のドメインを制御できるので、EasyXDMを試すことができます。これは、クロスブラウザーの癖をラップし、そのブラウザーで利用可能な最適なメカニズム (利用可能な場合はpostMessage 、利用できない場合は他のメカニズムなど)を使用して、異なるドメイン間でクライアント スクリプトで通信するための使いやすい API を提供するライブラリです。

警告: 動作させるには、両方のドメインを制御する必要があります (「制御」とは、両方に静的ファイルを配置できることを意味します)。ただし、サーバー側のコードを変更する必要はありません。

于 2010-05-04T17:54:40.750 に答える
1

クライアントは、アプリケーションによって提供される JavaScript ですよね?

その後、クライアントはアプリケーション (クロスサイト スクリプティング防止) にのみリクエストを送信できます。表示されているエラーは何ですか?

はいと仮定すると、解決策はアプリケーションに「プロキシ」サービスを提供させることです。ブラウザ コードは、サーバーにデータを要求できます。サーバーは、任意のサーバーに自由に Http リクエストを発行できます (ブラウザーに反対する必要はありません)。そのため、その cvs データを取得してアプリケーションに提示するための小さなサービスを実装します。

クライアントが CSV データを使用している場合は、その CSV データを JSON にマップすることもできます。

于 2009-08-07T11:21:42.517 に答える
0

フラッシュを介して試すことができます。この yourdomain.com/crossdomain.xml をルートに配置すると、mysite.com からクロス ドメイン リクエストを作成できるようになります。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.mysite.com" to-ports="25" />
</cross-domain-policy>
于 2009-08-07T11:49:21.637 に答える
0

サーバーで JS ファイルだけをホストすることはできませんか? これにより、そのファイル内のスクリプトが ajax 呼び出しをサーバーに戻すことができるようになります。

于 2009-08-07T11:28:04.050 に答える