我有行动
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)))
}
但我一直收到错误“预检的响应无效(重定向)”。你能告诉我如何解决这个问题吗?
答案 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}}