javascript - API 请求错误 - 请求的资源上不存在 'Access-Control-Allow-Origin' header

标签 javascript reactjs api axios react-hooks

我尝试获取 API 请求,但它正在返回此错误 Access to XMLHttpRequest at 'https://api.deezer.com/chart' from origin 'http://localhost:3000' has been blocked by CORS policy: No' Access-Control-Allow-Origin' header 出现在请求的资源上。
编码

const {data, setData} = useState({});
    const API = "https://api.deezer.com/chart";
    useEffect(() => {
        axios(API)
        .then(response => {
            setData(response);
            console.log(data)

        }) 

最佳答案

您必须了解 CORS 行为不是错误——它是一种按预期工作的机制,以保护您的用户、您或您正在调用的站点。 Check Link here
您可以通过以下不同方式使其工作:
临时解决方案:

  • 使用禁用 chrome 安全性
    Windows:Windows + R --> chrome --disable-web-security --user-data-dir
    MacOS:打开 -na Google\Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials
  • 添加和使用 chrome 扩展:
    https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc/related?hl=en-GB

  • 永久解决方案:
    如果您无权访问我可以看到您没有的 api 服务器,您可以从包装服务器调用此 API,它可以是任何服务器,例如:Node-express 服务器或 Java 服务器(添加基本节点服务器示例只需调用/getCharts api,你就会得到你想要的结果)

    const express = require('express')
    const app = express()
    const port = 3000
    const axios = require('axios');
    
    app.get('/getCharts', (req, res) => {
      const API = "https://api.deezer.com/chart";
      axios(API)
        .then(response => {
          console.log(response.data)
          res.json(response.data)
        }).catch(err => {
          res.send('errr!!!')
        })
    })
    
    app.listen(port, () => console.log(`Server running on http://localhost:${port}`))

    关于javascript - API 请求错误 - 请求的资源上不存在 'Access-Control-Allow-Origin' header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62979567/

    相关文章:

    javascript - html5 css 额外的空白右侧

    javascript - 通过 nodejs 服务器 + socket.io 从 mp3 文件同步流式传输音乐

    javascript - 在不重新渲染的情况下 react 添加 css 类

    ios - 图片搜索接口(interface)

    javascript - seekTo、playVideo 和 pauseVideo 函数在 YouTube Player API 中不起作用

    javascript - 如何删除我的 React Native 应用程序顶部的白条

    javascript - 在Protractor JS中使用 "invalid selector"时如何解决关于 "if statement"的错误?

    javascript - Airbnb/ react 日期 |有没有办法无限滚动月份而不是点击下个月?

    javascript - 尝试使用 componentWillReceiveProps 更改按钮颜色

    c - beanstalkd C 客户端库