我有一个create-react-app
onlocalhost:3000
和一个 phoenix 1.3 服务器:4000
。我正在尝试在两者之间设置 JWT 身份验证。
当我curl
的服务器工作正常。
$ curl -H "Content-Type: application/json" -X POST -d '{"session":{"email":"me@example.com", "password":"password"}}' http://localhost:4000/api/v1/sessions
>>> {"user":{"id":1,"handle":"me","email":"me@example.com"},"jwt":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjEiLCJleHAiOjE1MDYxNzQ2MzcsImlhdCI6MTUwMzU4MjYzNywiaXNzIjoiQXRoZW5hIiwianRpIjoiY2I5YjgyMDMtZjMxMi00YTE2LWIwOTItZjg4NDVlNmUzYzhiIiwicGVtIjp7fSwic3ViIjoiVXNlcjoxIiwidHlwIjoidG9rZW4ifQ.mg36_4Nj2tf26ey7c72rHnZKhQBlQZeBt1CSnsua44YYndt3i9ltPA1oq_WTp58f0f6X2KqioPlrdns2O5drgQ"}
React 端看起来像这样:
import React from 'react';
import fetch from 'isomorphic-fetch';
import { polyfill } from 'es6-promise';
const defaultHeaders = {
Accept: 'application/json',
'Content-Type': 'application/json',
};
function headers() {
return { ...defaultHeaders };
}
...
fetch("http://localhost:4000/api/v1/sessions", {
method: 'post',
headers: headers(),
body: JSON.stringify({session: {email: "me@example.com", password:"password"}}),
}).then(function(response){
console.log(response);
alert("Pausing so browser does not refresh");
})
当我fetch
拨打电话时,服务器控制台输出就好像curl
请求成功进入一样。.then()
但是,我在 fetch 的第一个子句中放置的任何函数似乎都没有发生任何事情。我没有看到警报或console.log(response)
.
最初我认为这是一个 CORS 问题,但我在 phoenix 中安装了 cors_plug 并在服务器上看到了所需的行为。我还在Chrome 上安装了Allow-Control-Allow-Origin 插件。
关于同构提取,我有什么遗漏吗?(或者,是否有更“反应”的方式来做到这一点?)