首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >被CORS阻止,没有‘访问-控制-允许-起源’头-不工作在react/axios中,但是在python/请求中工作很好。

被CORS阻止,没有‘访问-控制-允许-起源’头-不工作在react/axios中,但是在python/请求中工作很好。
EN

Stack Overflow用户
提问于 2022-03-17 23:05:26
回答 2查看 4K关注 0票数 0

下面的python请求正在使用私有API键从付费API中获取数据,并且提取工作正常:

代码语言:javascript
复制
import requests

api_key = 'our_private_api_key'
headers = { 'x-api-key': api_key }
params = {}
endpoint = 'our_api_endpoint_url'
resp: dict = requests.get(endpoint, headers=_headers_builder(headers), params=params).json().get('response', {})
resp_data = resp.get('data', None)

当使用axios在Javascript (React )中本地获取时,我们尝试使用类似的代码,但在JavaScript中(借助react query的useQuery):

代码语言:javascript
复制
import { useQuery } from 'react-query';
import axios from 'axios'

async function fetchLiveData() {
    const api_key = 'our_private_api_key';
    const endpoint = 'our_api_endpoint_url';
    const { data } = await axios.get(endpoint, { headers: { 'x-api-key': api_key } });
    return data;
}

const { data, error, isError, isLoading: isLoading25 } = useQuery('posts', fetchLiveData);

从这个...however中抛出以下错误。

代码语言:javascript
复制
Access to XMLHttpRequest at 'endpoint' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是一个本地主机问题,还是axios获取中遗漏了一些参数,或者是API提供程序的权限问题?还是别的什么?我们如何着手解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2022-03-17 23:16:17

我猜python在浏览器之外,浏览器阻止原始请求,客户端代码没有任何事可做,API负责处理这个问题,方法是添加一个http报头“访问-控制-允许-原产地: YOUR_DOMAIN或*”,您说这是一个付费的API,您不能处理这个问题,所以我假设他们有一个控制台仪表板,我认为在他们的设置中可以配置(白名单)接受的源,在那里您可以添加您的源、本地主机或允许所有的源。

票数 0
EN

Stack Overflow用户

发布于 2022-03-17 23:20:32

尝试在axios头中添加'Access-Control-Allow-Origin': '*',。在当地,它应该起作用。祝好运!

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71520037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档