2017-02-10 19 views
0

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がこれをどのように処理しているかの違いは何ですか?

+1

それらはまったく同じドメイン(およびプロトコル)から提供されていますか? – topheman

+2

これはCORSの問題のようです。 ReactNativeはサンドボックス化されているため(PhoneGap/Cordovaを使用した場合と同じ)、CORSは強制されません。この場合、JSとPOSTを同じサーバー(同じプロトコル、同じドメイン、同じポート)に提供していることを確認してください。 – elmasse

+0

@tophemanありがとう、それは私の問題だった。私は私のテストをPHPスクリプトが置かれていたドメインではなく、/ var/www/html /から実行していました。私はそれを考えるべきだったと思います! :) – kojow7

答えて

1

PHPコードにAccess-Control-Allow-Origin応答ヘッダーを送信する必要があります。

は、だからあなたの.phpソースファイルの先頭に次の行を追加します。「どちらも私のサーバー上に配置されているリアクトJSファイルとPHPファイル」

<?php 
header("Access-Control-Allow-Origin: *"); 
関連する問題