【问题标题】:CORS preflight response did not succeedCORS 预检响应未成功
【发布时间】: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,而不是客户端......
  • @deluxan 失败的 api 的响应可能会发生一些变化。你能再检查一遍吗?

标签: javascript axios cors


【解决方案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))
            })
    }
}

【讨论】:

  • 试过了。但是没用
猜你喜欢
  • 2015-10-15
  • 2021-09-03
  • 2017-03-14
  • 2021-11-12
  • 2019-03-17
  • 2015-11-22
  • 2016-08-06
  • 2016-08-17
  • 1970-01-01
相关资源
最近更新 更多