2017-12-25 13 views
0

私はこれらの機能をサーバに搭載し、もう1台はクライアントにインストールしています。私はReact Reduxをローカルで使用してリモート・サーバをホストしていると、Expressサーバが正しく応答しません

ノードエクスプレスコード:

app.get('/api/current_user', (req, res) => { 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000'); 
     res.send(req.user); 
    }); 

はReduxのコードに反応:

export const fetchUser =() => async dispatch => { 
    const res = await axios.get(`${URI}/api/current_user`); 

    console.log("res data: " +res.data) 

    dispatch({ type: types.FETCH_USER, payload: res.data }); 
}; 

問題は、私はこの{data: "", status: 200, statusText: "OK", headers: {…}, config: {…}, …}としてconsole.log("res data: " +res.data)の出力としてnullを取得することです。しかし、ブラウザでのテストではJSONをhttps://server243.azurewebsites.net/api/current_userとして取得します。

私はボーテサーバーを持っているし、ローカルで実行しているCLIENとき、私はCORSconsole.log("res data: " +res.data)

+0

リアックスレミックスパーツはあなたの問題とは完全に無関係です。ちょうど –

+0

と言ってください。 – Diamond

+0

を提示してください。簡単に言えば、あなたのエクスプレスサーバーは、リモートサーバーでホストされていると正しく応答しません。理由を聞くことができます。その間に、問題の原因となったものを考えさせてください。 –

答えて

1

をこのミドルウェアを追加してみてください、ヨール要求をブロックこの問題は反応アプリケーションにはありません。

req.userオブジェクトは、通常、PassportJsによって作成されます。したがって、パスポートがそのようにするには、まずあなたのケースであなたの反応アプリケーションにOauthプロバイダ(google)を呼び出さなければなりません。その後、プロバイダは、ユーザー名とパスワードを使用してログインできる画面にユーザーを誘導します。

認証に成功すると、エクスプレスアプリの登録済みエンドポイントは認証プロバイダによって呼び出され、最終的にユーザのブラウザとエクスプレスサーバとの間で有効なセッションが確立されます。

次に、req.userにpassportJsデシリアライズされたデータが格納されます。

0

Becouseローカルmashine上の要求を行うと、すべての(サーバとクライアント)がローカルホストであり、すべての罰金ですの出力としてデータを取得します。リモートサーバをアクセスもしようとする - それは、サーバとクライアントが同じドメインからではありませんbecouse

は、それがチャットで説明したように、あなたの特急サーバーに

app.use((req, res, next) => { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, PATCH, DELETE, MOVE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); 
    next(); 
}); 
+0

res.setHeader( 'Access-Control-Allow-Origin'、 'http:// localhost:3000'); だけが必要ですが、私はそれを言いました、私はすでに他のヘッダーを試しましたが、違いはありませんでした!私はそれらを削除して簡潔にしました。 – Diamond

+0

@Diamond 'res.send(req.user);を' res.end(req.user);と置き換えようとします。 – torokhkun

+0

これとbrbをチェックさせてください! – Diamond

関連する問題