web-dev-qa-db-fra.com

Demande ajax interdomaine

Je veux obtenir la page de réponse html à partir de l'URL interdomaine.

pour cela j'utilise la requête ajax comme,

 $.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'));
                });

            }
        });

Mais après avoir demandé, il ne répond pas avec un résultat.

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

Vérifiez la documentation: http://api.jquery.com/jQuery.ajax/

crossDomain (par défaut: faux pour les demandes de même domaine, vrai pour les demandes de plusieurs domaines)

Type: booléen

Si vous souhaitez forcer une demande crossDomain (telle que JSONP) sur le même domaine, définissez la valeur de crossDomain sur true. Cela permet, par exemple, la redirection côté serveur vers un autre domaine. (version ajoutée: 1.5)

4
radu florescu

Je soupçonne que vous voyez le problème parce que la page que vous demandez ne répond pas avec une réponse json (p), mais répond avec une redirection vers:

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

(notez la barre oblique)

qui renvoie ensuite le type de contenu:

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

Modifier: Si votre intention est de récupérer le domaine croisé de données du site ci-dessus, pour une analyse plus approfondie par votre script, je vous suggère de choisir l'une des options suivantes :

Hypothèse 1 : [~ # ~] vous [~ # ~] contrôlez les pages du serveur " http://wcidevapps.com "

Dans ce cas, vous avez deux options: soit ajouter un en-tête CORS "Access-Control-Allow-Origin: *" à la réponse (et configurer l'appel ajax () du client avec dataType: "html"), soit créer un JSON spécial ( P) page qui fournit les mêmes données que JSON (avec padding) (et configure l'appel client ajax () comme dans l'OP, avec dataType: "jsonp")

Hypothèse 2 : [~ # ~] vous [~ # ~] êtes [~ # ~] pas [~ # ~] dans le contrôle des pages sur le serveur http://wcidevapps.com

Dans ce cas, la seule option à laquelle je pense est de configurer un proxy sur un site que vous contrôlez. Ayez ce proxy "proxy" les demandes/réponses à " http://wcidevapps.com ", mais ajoutez l'en-tête CORS "Access-Control-Allow-Origin: *" à la réponse (et configurez l'appel client ajax () avec dataType: "html")

3
marty

Si vous utilisez le service Web asp.net, vous devez l'ajouter au fichier 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