web-dev-qa-db-ja.com

クロスドメインAjaxリクエスト

クロスドメインURLからHTML応答ページを取得したい。

このため、私はajaxリクエストを次のように使用しています

 $.ajax({
            type: 'GET',
            url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
            dataType: "jsonp",
            success: function (response) {
                $(response).find('li a').each(function () {
                    listHref.Push($(this).attr('href'));
                });

            }
        });

ただし、リクエストした後、応答が返されることはありません。

12
Rahul_RJ
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
  <script type="text/javascript">
    function NameAFunctionName() {
        $.ajax({
          url: 'http://wcidevapps.com/salescentral/idisk/0001000383/iDisk',
          type: 'GET',
          dataType: 'json',
          headers: {
            //WRITE IF THEIR HAVE SOME HEADER REQUEST OR DATA
          },
          crossDomain: true,
          success: function (data, textStatus, xhr) {
            console.log(data);
          },
          error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
          }
        });
    }   
</script>
5
Abhisek Das

ドキュメントを確認してください: http://api.jquery.com/jQuery.ajax/

crossDomain(デフォルト:同じドメインのリクエストの場合はfalse、クロスドメインのリクエストの場合はtrue)

タイプ:ブール

同じドメインでcrossDomainリクエスト(JSONPなど)を強制する場合は、crossDomainの値をtrueに設定します。これにより、たとえば、サーバー側から別のドメインへのリダイレクトが可能になります。 (追加されたバージョン:1.5)

4
radu florescu

私が疑っているのは、リクエストしているページがjson(p)応答ではなく、次へのリダイレクトで応答するため、問題が表示されることです。

http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/

(末尾のスラッシュに注意してください)

次にコンテンツタイプを返します。

Content-Type:text/html;charset=ISO-8859-1

Edit:上記のサイトのデータをクロスドメインで取得する場合、スクリプトでさらに解析するために、次のいずれかを選択することをお勧めします:

仮定1[〜#〜] you [〜#〜]はページを制御していますサーバー " http://wcidevapps.com "

その場合、2つのオプションがあります。CORSヘッダー "Access-Control-Allow-Origin:*"を応答に追加する(およびdataType: "html"でクライアントajax()呼び出しを構成する)か、特別なJSON( P)JSONと同じデータを配信するページ(パディングあり)(およびOPのようにdataType: "jsonp"を使用してクライアントajax()呼び出しを構成します)

仮定2[〜#〜] you [〜#〜][〜#〜] not [〜#〜]サーバー上のページの制御 http://wcidevapps.com

その場合、私が考えることができる唯一のオプションは、あなたが制御するサイトにプロキシを設定することです。そのプロキシに「 http://wcidevapps.com 」へのリクエスト/レスポンスを「プロキシ」しますが、CORSヘッダー「Access-Control-Allow-Origin:*」をレスポンスに追加します(そして構成します) dataType: "html"を使用したクライアントajax()呼び出し)

3
marty

Asp.net Webサービスを使用している場合、これをwebconfigファイルに追加する必要があります。

<system.webServer>
    <directoryBrowse enabled="true"/>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
</system.webServer>
2
Sahin Yanlık