ReactJSスクリプトをバックエンドPHPスクリプトで認証しようとしています。残念ながら、次のエラーが発生します。ReactからPHPスクリプトにフォームデータを送信できません
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).
React JSファイルとPHPファイルはいずれも私のサーバーにあります。ユーザーがブラウザにJavaScriptをダウンロードすると、自分のサーバーから来たものと見なされなくなるため、クロス・オリジンと見なされます。これを修正するにはどうすればよいですか?
ここにあるフォームコードのほとんどは、https://facebook.github.io/react/docs/forms.htmlを使用しており、ユーザー名とパスワードを受け入れるように変更しています。
私はその名前とパスワードを私のPHPスクリプトに送信しようとしています。このPHPスクリプトは、ユーザが認証されたかどうかを示すメッセージを返します。これは私に問題を与えているコードです:側質問として
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);
})
}
、私はネイティブ反応し、それがうまく働いたに似たコードを使用することができました。 React JSとReact Nativeがこれをどのように処理しているかの違いは何ですか?
それらはまったく同じドメイン(およびプロトコル)から提供されていますか? – topheman
これはCORSの問題のようです。 ReactNativeはサンドボックス化されているため(PhoneGap/Cordovaを使用した場合と同じ)、CORSは強制されません。この場合、JSとPOSTを同じサーバー(同じプロトコル、同じドメイン、同じポート)に提供していることを確認してください。 – elmasse
@tophemanありがとう、それは私の問題だった。私は私のテストをPHPスクリプトが置かれていたドメインではなく、/ var/www/html /から実行していました。私はそれを考えるべきだったと思います! :) – kojow7