2017-02-10 3 views
0

Ich versuche mein ReactJS-Skript mit einem Backend-PHP-Skript zu authentifizieren. Leider erhalte ich folgende Fehlermeldung:Kann keine Formulardaten von React an ein PHP-Skript senden

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://ourlanguages.net/data/getinfo.php . (Reason: CORS header 'Access-Control-Allow-Origin' missing).

Sowohl die React JS-Dateien als auch die PHP-Dateien befinden sich auf meinem Server. Ich gehe davon aus, dass es ein Cross-Origin ist, denn sobald der Benutzer das Javascript in seinen Browser geladen hat, wird es nicht länger als von meinem Server kommend angesehen. Was kann ich tun, um das zu beheben?

Ich benutze die meisten Formulare Code hier: https://facebook.github.io/react/docs/forms.html und ändern, um einen Benutzernamen und ein Passwort zu akzeptieren.

Ich versuche dann, diesen Namen und mein Passwort an mein PHP-Skript zu senden, das eine Nachricht zurück sendet, die angibt, ob der Benutzer authentifiziert wurde oder nicht. Dies ist der Code, der mir bei dem das Problem geben:

handleSubmit(event) { 
    alert('Data was submitted: ' + this.state.user + ': ' + this.state.password); 
    event.preventDefault(); 

    let response = fetch('http://example.com/verify_login.php', { 
     method: 'POST', 
     headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify({ 
       username: username, 
       password: password 
     }) 
    }).then((response) => { 
      return response.json() 

    }).then((responseJSON) => { 
      alert("Response: " + responseJSON); 
    }) 



    } 

Als Seite Frage konnte ich einen ähnlichen Code verwenden, in der india Reagieren und es funktionierte gut. Was ist der Unterschied in der Handhabung von React JS und React Native?

+1

Werden sie von genau derselben Domäne (und Protokoll) bedient? – topheman

+2

Es scheint ein CORS-Problem. ReactNative funktioniert, da es sandboxed ist (wie bei Verwendung von PhoneGap/Cordova), sodass CORS nicht erzwungen wird. Stellen Sie in diesem Fall sicher, dass Sie Ihre JS- und POST-Daten an denselben Server senden (dasselbe Protokoll, dieselbe Domäne und denselben Port). – elmasse

+0

@topheman Danke, das war mein Problem. Ich habe gerade meinen Test von/var/www/html/ausgeführt und nicht in der Domäne, in der sich mein PHP-Skript befand. Ich hätte daran denken sollen! :) – kojow7

Antwort

1

Sie müssen Ihren PHP-Code senden einen Access-Control-Allow-Origin Antwortheader.

So fügen Sie den folgenden an die Spitze Ihrer .php Quelldatei: „Sowohl die JS Reagieren Dateien und die PHP-Dateien auf meinem Server befinden“

<?php 
header("Access-Control-Allow-Origin: *"); 
Verwandte Themen