1

別のドメインから Web ページを呼び出す必要があります。ブラウザからこのページを呼び出すと、正常に応答します。しかし、サーバー側のコードまたは jquery ajax スクリプトから呼び出すと、空の xml が応答します。

次のようなページまたはサービスを呼び出そうとしています:

http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801

これはブラウザから正常に応答します。しかし、次のような ac# コードを書くと:

WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5";
wc.Headers[HttpRequestHeader.Accept] = "*/*";
wc.Headers[HttpRequestHeader.AcceptCharset] = "ISO-8859-1,utf-8;q=0.7,*;q=0.3";
wc.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate,sdch";
wc.Headers[HttpRequestHeader.AcceptLanguage] = "en-US,en;q=0.8";
wc.Headers[HttpRequestHeader.Host] = "otherdomain.com";
var response = wc.DownloadString("http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801");
Response.Write(response);

私は応答として空のxmlを取得します:

<xml></xml>

ブラウザから取得したのと同じ応答をサーバー側コードまたはクライアント側から取得するにはどうすればよいですか?

私はここで解決策を試しました: Calling Cross Domain WCF service using Jquery

何をすべきかわからなかったので、説明されている解決策を適用できませんでした。

4

1 に答える 1

1

ブラウザから取得したのと同じ応答をサーバー側コードまたはクライアント側から取得するにはどうすればよいですか?

同一オリジン ポリシーの制限により、ブラウザからクロス ドメイン AJAX リクエストを送信することはできません。

一方、.NET からは、この要求を問題なく送信できます。ただし、リクエストを送信しようとしている Web サーバーは、ヘッダーなどの HTTP ヘッダーを想定している可能性がありますUser-Agent。そのため、サーバーが必要とするすべてのヘッダーをリクエストに指定したことを確認してください。たとえば、User-Agentヘッダーを追加するには:

using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5";
    var response = wc.DownloadString("http://www.otherdomain.com/oddsData.jsp?odds_flash_id=11&odds_s_type=1&odds_league=all&odds_period=all&me_select_string=&q=93801");
    Response.Write(response);
}

FireBug または Chrome 開発者ツールバーを使用して、ブラウザーが機能する要求と共に送信するすべての HTTP 要求ヘッダーを検査し、それらのヘッダーを追加するだけです。

于 2012-06-29T17:19:36.470 に答える