当前位置: 首页 > 面试题库 >

从React(同构应用)进行API调用时出现'Access-Control-Allow-Origin'问题

柳豪
2023-03-14
问题内容

我使用React和Express的同构JavaScript应用程序遇到问题。

我正在尝试在组件装入时使用axios.get发出HTTP请求

componentDidMount() {
  const url = 'http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders';
  axios.get(url).then( res => {
    //use res to update current state
  })
}

我从API获取状态为200 res,但是没有收到任何响应数据并且控制台中出现错误

XMLHttpRequest cannot load http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:3000' is therefore not allowed access.

但是,如果我在server.js中发出请求

const url = 'http://ufc-data-api.ufc.com/api/v3/iphone/fighters/title_holders';
axios.get(url).then(res => {
    //console.log(res);
});

它工作正常,服务器启动时我得到响应数据。这是实际API的问题,还是我做错了什么?如果这是一个CORS问题,我猜server.js中的请求也不起作用?谢谢!


问题答案:

CORS是 浏览器
功能。服务器需要选择加入CORS,以允许浏览器绕过同源策略。您的服务器将没有相同的限制,并且能够使用公共API向任何服务器发出请求。https://developer.mozilla.org/zh-
CN/docs/Web/HTTP/Access_control_CORS

在启用了CORS的服务器上创建可以充当Web应用程序代理的终结点。



 类似资料:
  • Access-Control-Allow-Origin响应 header 指示是否该响应可以与具有给定资源共享原点。 Header type Response header Forbidden header name no 语法 Access-Control-Allow-Origin: *Access-Control-Allow-Origin: <origin> 指令 * 对于没有凭据的请求,服务

  • 问题内容: 我正在尝试使用以下代码获取我的instagram feed 我得到的错误是 所请求的资源上没有“ Access-Control-Allow-Origin”标头。 有没有解决的办法? 问题答案: Instagram API支持,因此添加到url并添加到调用中,如下所示:

  • XMLHttpRequest无法加载http://localhost:8080/nobelgrid/api/users/create/。请求的资源上没有“访问-控制-允许-来源”标头。因此,不允许访问源'http://localhost:63342'。响应的HTTP状态代码为500。 谁能帮帮我吗? 更新: 但我还有一个错误。我会做另一个问题,因为我认为这是一个不同的论点。 提前感谢!

  • 问题内容: 这可能是一个简单的(一系列)问题,但我无法解决。 我正在尝试从托管在我网站上的Web应用程序访问github api。简而言之,这是代码: 如果我将浏览器指向在我的保管箱帐户上载的这个简单页面,则一切正常。相反,如果我将浏览器指向该网站上上传的这个简单页面,则会得到臭名昭著的异常: 因此,问题是: 为什么在Dropbox上可以使用? 我了解使用CORS即使在网站上也可以使用。这是我的A

  • 问题内容: 我正在为基于Django的应用程序开发Phonegap应用程序,但是在尝试进行Ajax调用时出现此错误: 我如何才能做到这一点,以便我的Django应用程序允许某些URL的交叉源? 这是我的Ajax代码: 问题答案: Django默认情况下不提供提供交叉原点所必需的标头。最简单的方法是只使用为您处理该Django应用程序:https : //github.com/ottoyiu/dja

  • RESTful WebService是用Java构建的。这里有方法,该方法获取对象,并在中返回该对象: 我必须做什么才能成功地从Angular 6客户机调用Java RESTful WebService?