Javascript / Rails授权获取标头

时间:2016-05-18 10:57:38

标签: javascript authentication token fetch

所以我正在开发React / Redux SPA应用程序,我希望有一个授权工作。我有devise_token_auth gem工作的Rails后端和(在React应用程序中)我需要保存后端响应给我的令牌。但是,response.headers没有可用的令牌。为什么? CORS在后端设置属性,所以我确定这不是问题所在。看看代码和截图:

let config = {
  method: 'POST',
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(creds) // { email: 'asd@example.org', password: 'asdasdasd' }
}

return dispatch => {
  dispatch(requestLogin(creds))
  return fetch('http://localhost:3000/auth/sign_in', config)
    .then((response => {
      response.headers.forEach((el) => console.log(el))
    }))
}

的console.log:

console.log from code above

证明浏览器看到标题:

enter image description here

1 个答案:

答案 0 :(得分:1)

固定。问题出在后端。我在我的rack-cors初始化程序中有这个:

headers: :any,                                                                                                         
methods: [:get, :post, :put, :patch, :delete, :options, :head]

改为:

headers: :any,
expose: ['access-token', 'expiry', 'token-type', 'uid', 'client'],
methods: [:get, :post, :put, :patch, :delete, :options, :head]                                                                                               

现在一切正常:) 通过devise_token_auth的源代码查看它。