2016-07-16 12 views
-1

Ich habe ein Python-Skript, das eine JSON erzeugt, und ich kann es in http://192.168.1.171:17000/GET JSON mit XMLHttpRequest

In der Registerkarte Netzwerk I

200 GET/192.168.1.171:17000 json transfereed 40KB 

Wenn ich versuche, es von einem anderen bekommen

sehen GET Webseite mit Javascript

var url = "http://192.168.1.171:17000"; 
var Httpreq = new XMLHttpRequest(); 

function Get(url){ 
    Httpreq.open("GET", url, false); 
    //Httpreq.setRequestHeader('Access-Control-Allow-Origin', '*'); 
    Httpreq.send(null); 
    return Httpreq.responseText;   
} 

var json_obj = JSON.parse(Get(url)); 
console.log("data: "+json_obj); 

im Netzwerk Tab ich

200 GET/192.168.1.171:17000 json transfereed 0KB 

es Registerkarte Antwort

SyntaxError: 
    JSON.parse: unexpected end of data at line 1 column 1 of the JSON data 

und in der Konsole

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help http://xhr.spec.whatwg.org/ 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.171:17000/. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 
NS_ERROR_FAILURE: 

Als ich

Httpreq.setRequestHeader('Access-Control-Allow-Origin', '*'); 

statt das Problem zu lösen ich bin immer noch ein Fehler

hinzufügen
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.171:17000/. (Reason: CORS request failed). 

Wenn ich http://192.168.1.171:17000/ besuche, bekomme ich meinen JSON, der gültig ist, und wenn ich meinen Javascript-Code mit einem anderen json laufen lasse, läuft er. Aber wenn ich meinen Javascript-Code mit meinem json laufen lasse, läuft es nicht. Könntest du mir bitte helfen zu verstehen, was ich hier falsch mache?

+0

Remember Cross Origin Fehler bedeutet, dass Sie versuchen, ein Skript auf einem Server auszuführen, der auf demselben Ursprung (dasselbe IP-Netzwerk) ist. Sowohl Ihr Browser als auch Ihr Server befinden sich im selben IP-Netzwerk. Versuchen Sie Google Chrome mit der Erweiterung Google Chrome Webserver https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl= zu verwenden de. Ich werde Sie von einem Webserver starten, der Sie auf Ihrem 192. *. *. * Abfragen wird. Netzwerk. Das hat mir geholfen, das Cross-Origin-Problem zu lösen –

Antwort

0

Dieser Header muss der Antwort des Servers hinzugefügt werden, nicht die Anfrage des Clients. Mit anderen Worten, Sie müssen Ihre Python-App ändern, um den Header Access-Control-Allow-Origin zurückzugeben. (Wie genau Sie das tun, hängt davon ab, was Sie auf der Python-Seite verwenden.)