cors - 预检的响应无效(重定向) - redux

时间:2016-12-09 13:52:51

标签: reactjs cors redux fetch

我有行动

export function searchInWiki(search) {
const myRequest = new Request(API_URL + search);
const myInit = {
  method: 'POST',
  mode: 'cors',
  headers: {
   'Access-Control-Allow-Origin':'*',
   'Content-Type':'multipart/form-data',
    'Access-Control-Allow-Methods': 'DELETE, HEAD, GET, OPTIONS, POST, PUT',
    'Access-Control-Allow-Headers': 'Content-Type, Content-Range, Content-Disposition, Content-Description',
    'Access-Control-Max-Age': '1728000'
  }
};

return dispatch => fetch(myRequest, myInit)
  .then(response => response.json())
  .then(json => dispatch(getResults(json)))
}

但我一直收到错误“预检的响应无效(重定向)”。你能告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

当您正在进行CORS预检请求时,听起来您的服务器正在使用重定向进行响应。它不应该这样做。我已经看到它发生在重定向到授权失败的反应之前。我们处理的方法是检查请求方法是否等于OPTIONS然后立即结束状态代码为200的响应。

答案 1 :(得分:0)

您可能错过了Accept Accept-Language Content-Language Content-Type (but note the additional requirements below) Last-Event-ID DPR Save-Data Viewport-Width Width 选项:

  

凭据:'同源',//包含,同源,*省略

除此之外,我不明白你为什么要从浏览器发送应该由服务器填充的标题。我在谈论所有这些CORS标头。检查docs on using fetch,但特别on CORS,它解释了CORS请求中允许的标头:

  

除了用户代理自动设置的标头(用于   例如,Connection,User-Agent或任何其他标头   在Fetch规范中定义的名称为“禁用标题名称”),.   只允许手动设置的标题是那些   Fetch spec定义为“CORS-safelisted request-header”,其中   是:

{{1}}