2 linhonghu2 LinHongHu2 于 2018.03.08 10:59 提问

接口调用问题,查了很多资料仍然很困惑

为什么在使用别人API获取数据的时候,我在浏览器中直接输入接口地址,可以获取到相应的数据。但是,在我代码中(react fetch)调用这个请求接口地址时,浏览器却报了如下内容
已拦截跨源请求:同源策略禁止读取位于 http://op.juhe.cn/onebox/basketball/nba?key=ee923c8ea92051 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
跨域不了呢?
我查了很多资料还是不太能理解~

7个回答

sinxx2009
sinxx2009   2018.03.08 13:48
已采纳

应该是别人的api设置了禁止跨域请求。
如果别人的api允许跨域请求,
那么你的请求头中就应该加上Access-Control-Allow-Origin

LinHongHu2
LinHongHu2 我最后找到解决根据一篇博客找到解决方案,就是我自己搭建自己的后端服务器去请求API,然后我前端在访问自己的后端就OK了!
4 个月之前 回复
LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
airfling
airfling   2018.03.08 11:28

应该是别人的api设置了禁止跨域请求。如果别人的api允许跨域请求,那么你的请求头中就应该加上Access-Control-Allow-Origin

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
face_to
face_to   2018.03.08 11:46

你可以问问,是否在调用api之前,要通过什么验证登录一下。

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
daidaineteasy
daidaineteasy   Ds   Rxr 2018.03.08 12:31

人家的api没有开启对你的域名的跨域请求。

你可以问一下人家是否可以加上对你的域名的跨域请求。

关键的解决节点还是在人家提供api的那里

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
qq_39706986
qq_39706986   2018.03.08 14:53

/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found)
当我打开时首先选项卡图标是找不到的,然后你这个请求是错误的key,要么是你传值的问题,要么是后台回应的问题

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
qq_32616177
qq_32616177   2018.03.08 14:56

可能是别人禁止了跨域请求
response.setContentType("text/html;charset=UTF-8");
response.setHeader("progma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
PrintWriter out = response.getWriter();
上面这个就是java允许跨域请求

项目的部署环境也可能会组织跨域请求,比如nginx拦截

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
qq_38819340
qq_38819340   2018.03.08 15:23

api没有开启对你的域名的跨域请求。

LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
LinHongHu2
LinHongHu2 谢谢回答
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!