2016-06-29 8 views
0

Ich möchte eine CORS bekommen Anfrage, sagen Google (nur ein Beispiel. Ich bin tatsächlich Zugriff auf eine Website, die JSON-Daten zurückgibt). Unten ist mein Ajax-Code:CORS Anfrage mit Ajax/Javascript/Django

$.ajax({ 
    url: "https://www.google.com", 
    type: "get", 
    dataType: "json", 
    crossDomain: true, 
    success: function(data, textStatus) { 
     alert ("success" + data); 
    }, 
    error: function(data, textStatus) { 
     alert ("fail" + data); 
    } 
}) 

Mit dem obigen Code, den ich diesen Fehler habe:

XMLHttpRequest cannot load https://www.google.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://sdlweb-dev:1234' is therefore not allowed access. The response had HTTP status code 405. 

habe ich versucht, Code wie

 headers: { 
      "Access-Control-Allow-Origin": "*", 
      "Access-Control-Allow-Headers": "X-Requested-With,content-type", 
      "Access-Control-Allow-Credentials": true 
     } 

Zugabe, aber immer noch die gleichen Fehler.

Ich habe versucht, DataType von 'Json' zu 'Jsonp' zu ändern. Auf diese Weise wird die Anfrage gesendet, da aber die Antwort ist nicht JSONP, bekam ich einen anderen Fehler:

Uncaught SyntaxError: Unexpected token < 

Ohne die Server-Seite zu modifizieren (ich meine die URL, die ich bekommen Anfrage senden, weil ich nicht habe Zugang zu diesem), kann ich CORS Anfrage senden?

Jede Hilfe wird geschätzt !!!

Danke,

Fei

Antwort

0

Sie Muss haben Zugriff auf den Server-Code, um CORS-Anfragen zu ermöglichen.

Die Header, die Sie zeigten, sollten Header in der Antwort zurückgesendet werden, nicht in der Anfrage.

+0

Danke! Mit Server meinen Sie den Server, auf den ich zugreifen möchte, oder? (Nicht mein Server, den ich meine Website hosten) – Feiiiiiiiiiiiii

+0

Ich bin auch in der Lage, die Antwort zu erhalten, indem ich den dataType auf "jsonp" setze. Aber da der zurückgegebene Datentyp nicht "jsonp" ist, gibt es eine Möglichkeit, es irgendwie zu wickeln und den Inhalt zu bekommen? – Feiiiiiiiiiiiii

+0

@Feiiiiiiiiiiiii Um Ihren ersten Kommentar zu beantworten: Ja. Um deine Sekunde zu beantworten: Nein. – idbehold