CORS 预检响应未成功
Posted
技术标签:
【中文标题】CORS 预检响应未成功【英文标题】:CORS preflight response did not succeed 【发布时间】:2020-09-05 15:27:11 【问题描述】:从 axios 获取 API 时出现以下错误
跨域请求被阻止:同源策略不允许读取 https://...bla bla.... 的远程资源(原因:CORS 预检 响应没有成功)
跨域请求被阻止:同源策略不允许读取 https://...blabla 的远程资源.....(原因:CORS 请求 没有成功)
我认为第二个错误是因为第一个错误。这里主要是修复第一个错误。
actions.js
export const getMetadata = srNumber =>
return (dispatch) =>
dispatch(getMetadataRequest())
axios.get(`$BASE_URL/some path/$srNumber`,
headers:
'X-JWT-Assertion': ASSERTION,
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': '*',
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Headers': 'Content-Type, Authorization'
)
.then(response =>
const data = response.data
console.log("GET METADATA", data)
dispatch(getMetedataSuccess(data))
)
.catch(error =>
const errorMessage = error.message
console.error("GET METADATA", errorMessage)
dispatch(getMetadataFailure(errorMessage))
)
【问题讨论】:
您在 https:// ....bla 的服务器应该允许您的应用程序的主机:端口组合允许请求。参考这个enable-cors.org/server.html 我为同一台服务器获取了三个 api。他们两个在工作。仅此一项是行不通的 在服务器端启用cors,而不是客户端...... 参考这个以便更好地理解html5rocks.com/en/tutorials/cors/#toc-cors-server-flowchart @deluxan 失败的 api 的响应可能会发生一些变化。你能再检查一遍吗? 【参考方案1】:试试这个:
const options =
method: 'GET',
headers:
// add header which is required for the call, please dont add response headers
url: `$BASE_URL/some path/$srNumber`,
;
export const getMetadata = srNumber =>
return (dispatch) =>
dispatch(getMetadataRequest())
axios(options)
.then(response =>
const data = response.data
console.log("GET METADATA", data)
dispatch(getMetedataSuccess(data))
)
.catch(error =>
const errorMessage = error.message
console.error("GET METADATA", errorMessage)
dispatch(getMetadataFailure(errorMessage))
)
【讨论】:
试过了。但是没用以上是关于CORS 预检响应未成功的主要内容,如果未能解决你的问题,请参考以下文章
为啥 CORS 错误“对预检请求的响应未通过访问控制检查”?