为什么在使用别人API获取数据的时候,我在浏览器中直接输入接口地址,可以获取到相应的数据。但是,在我代码中(react fetch)调用这个请求接口地址时,浏览器却报了如下内容
已拦截跨源请求:同源策略禁止读取位于 http://op.juhe.cn/onebox/basketball/nba?key=ee923c8ea92051 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
跨域不了呢?
我查了很多资料还是不太能理解~
应该是别人的api设置了禁止跨域请求。
如果别人的api允许跨域请求,
那么你的请求头中就应该加上Access-Control-Allow-Origin
应该是别人的api设置了禁止跨域请求。如果别人的api允许跨域请求,那么你的请求头中就应该加上Access-Control-Allow-Origin
你可以问问,是否在调用api之前,要通过什么验证登录一下。
人家的api没有开启对你的域名的跨域请求。
你可以问一下人家是否可以加上对你的域名的跨域请求。
关键的解决节点还是在人家提供api的那里
/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found)
当我打开时首先选项卡图标是找不到的,然后你这个请求是错误的key,要么是你传值的问题,要么是后台回应的问题
可能是别人禁止了跨域请求
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拦截
api没有开启对你的域名的跨域请求。