2017-06-08 9 views
0

Ich schicke einen Beitrag Ajax-Request eine Anfrage Optionen anstelle einem Post schicken:Beitrag Ajax-Request

var responsehttpreq = {} 
function createAndSendXmlHttpReq(){ 
    requestBody = { 
     hostname: "prova", 
     pathname: "prova", 
     query: "prova", 
     method: "prova" 
    } 
    console.log("Siamo nella funzione createAndSendXmlHttpReq") 
    var req = new XMLHttpRequest() 
    req.onreadystatechange = handler 
    req.open("POST","http://localhost:8080",true) 
    req.setRequestHeader("Content-type","application/json") 
    req.send(JSON.stringify(requestBody)) 
} 

function handler(){ 
    if(this.readyState == 4 && this.status == 200){ 
     console.log('----Risposta http------') 
     console.log('Status Code:'+this.status) 
     console.log('Dati:'+this.response) 
     responsehttpreq = JSON.parse(this.response) 
    } 
} 

Die createAndSendXmlHttpReq() von einer Schaltfläche in einer HTML-Seite aufgerufen wird, wenn ich die Taste I drücken empfange keine Antwort, aber ich kann von der Entwicklerkonsole aus sehen, dass eine Optionsanforderung für die CORS-Option gesendet wurde. ich einen Knoten js Server implementiert habe im Fall einer Option, die eine Anforderung Antwort richtig senden:

if(req.method == "OPTIONS"){ 
     res.setHeader("Access-Control-Allow-Origin","*") 
     res.setHeader("Access-Control-Allow-Methods","POST") 
     res.setHeader("Access-Control-Request-Headers","content-type") 
     res.end() 
    } 

Der Browser eine 200 OK-Antwort vom Server für die Optionen Anfrage erhalten, aber nach, dass meine Ajax-Post-Anforderung don Ich komme zum Server. Was ist das Problem?

Antwort

3
res.setHeader("Access-Control-Allow-Origin","*") 

Ein Access-Control-Allow-Origin Header in Reaktion auf eine preflight OPTIONS request nicht einen Platzhalter verwenden können.

Die Konsole Ihres Browsers sollte Ihnen dies sagen.

Sie müssen sich die Anforderungskopfzeile Origin ansehen, feststellen, ob sie für Sie akzeptabel ist, und sie dann als Wert für die Kopfzeile Access-Control-Allow-Origin verwenden.

+0

@ Alexandru-Ionut Mihai - Ich habe Ihre Bearbeitung zurückgesetzt. Die Frage ist ** Lesen ** der Anfrage dann ** Einstellen ** der Antwort ... und ich zitierte den Code aus der Frage. Bearbeiten Sie den Code anderer Personen nur für die Formatierung. – Quentin

+0

In der Origin-Kopfzeile meiner Option Anfrage ist geschrieben "Null", jetzt mein Server sendet Access-Control-Allow-Origin: null, aber nach der Antwort des Servers keine Post-Anfrage ausgelöst werden :( – SimCor