fetch跨域POST报401 Unauthorized

export const login = accesstoken => dispatch => {
  return fetch('https://cnodejs.org/api/v1/accesstoken', {
    method: 'POST',
    body: JSON.stringify({ accesstoken })
  }).then(res => {
    if (res.ok) {
      return res.json()
    } else {
      return Promise.reject(res.statusText)
    }
  }).then(({
    loginname
  }) => Promise.resolve(loginname))
}

如上,用的是浏览器原生的Fetch接口,但是由于涉及到跨域POST请求,没有事先发送OPTIONS请求,所以直接返回了401,请问有什么比较好的解决方法么?

阅读 7.2k
1 个回答
export const login = accesstoken => dispatch => {
  return fetch('https://cnodejs.org/api/v1/accesstoken', {
    method: 'POST',
    body: JSON.stringify({ accesstoken }),
    // // 加一句
    headers: new Headers({
      'Content-Type': 'application/json'
    })
  }).then(res => {
    if (res.ok) {
      return res.json()
    } else {
      return Promise.reject(res.statusText)
    }
  }).then(({
    loginname
  }) => Promise.resolve(loginname))
}

没有发起OPTIONS请求是因为这所有的一切设置还无法触发preflight request

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题