如何在 ReactJS 中的 http://localhost:3000/ 和 TMDB api 之间启用 CORS?

Posted

技术标签:

【中文标题】如何在 ReactJS 中的 http://localhost:3000/ 和 TMDB api 之间启用 CORS?【英文标题】:How to enable CORS between http://localhost:3000/ and TMDB api in ReactJS? 【发布时间】:2021-02-21 06:31:32 【问题描述】:

我遇到了无法从 TMDB API 获取数据的错误。

从源“http://localhost:3000”访问“https://api.themoviedb.org/3”处的 XMLHttpRequest 已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。

axios.js 设置

import axios from "axios";  
const instance = axios.create(
    baseURL: "https://api.themoviedb.org/3",
)  
export default instance;

request.js 设置:

const API_KEY = "xxx";  
const request =   
  fetchTrending: `/trending/all/week?api_key=$API_KEY&language=en-US`,  
  fetchNetflixOriginal: `/discover/tv?api_key=$API_KEY&with_networks=213`,  
  
export default request;

App.js

useEffect(() => 
        //if [], run once when row load, and dont run again
        console.log("rrrrsd >>> ", typeof(fetchUrl))

        async function fetchData()
            const response = await axios.get(fetchUrl, 
                headers:
                    'Access-Control-Allow-Origin': '*',
                
            ).then(function (response)
                console.log('response >>>>', response.data)
            ).catch(function (error)
                if(error.response)
                    console.log('response error >>>', error.response.headers)
                
                else if(error.request)
                    console.log('error request >>>', error.request)
                
                else
                    console.log('message error >>>', error.message)
                
            )

        
        fetchData()
    ,[fetchUrl])

请帮我在 TMDB API 和 ReactJS localHost 之间启用 CORS

【问题讨论】:

【参考方案1】:

使用 google chrome 扩展程序,例如 (CORS Domain) 或 (Allow CORS) 我昨天遇到了同样的问题,扩展程序解决了它

【讨论】:

对我来说,它仍然会在 'api.themoviedb.org/3' 处从原始 'localhost:3000' 错误中提供对 XMLHttpRequest 的访问权限。出于测试目的,我将 fetchUrl 更改为“api.themoviedb.org/3/trending/all/day?api_key=xxx”,并提供数据。我怀疑 fetchUrl 不正确。 @rafalias 你试过扩展吗? 是的,我确实在 localHost:3000 上打开了 Allow Cors

以上是关于如何在 ReactJS 中的 http://localhost:3000/ 和 TMDB api 之间启用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在reactjs中的div之间拖放?

reactjs - 如何隐藏一个div并将其替换为reactjs中的另一个div?

如何保护 ReactJs 中的路由?

如何在多个文件中分解 REACTJS 中的 Axios 调用?

如何在注销/注销时清除 ReactJs 中的所有商店?

如何在 ReactJS 中的事件上添加或删除类名?