搜索
缓存时间01 现在时间01 缓存数据 和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!
查看: 205|回复: 3

求大佬解决个跨域问题!

[复制链接]
发表于 2024-10-22 16:24:47 来自手机 | 显示全部楼层 |阅读模式
悬赏16金币未解决
大佬们,有没有会搞跨域的
我自己搞得站对接优酷云,出现跨域,提示如下图

自己用代理换成自己域名之后还是会出现这个问题,折腾两天了,无解

爱生活,爱奶昔~
发表于 2024-10-22 16:40:21 | 显示全部楼层
半残 发表于 2024-10-22 16:38
这些方法试过了,CORS头这一项折腾两天,人都麻了,然后今天也试了代理服务器中加请求头,目前还是不行 ...

这种情况可能涉及到更深层次的配置或者第三方平台(比如优酷API)的限制。以下是一些进一步的建议,希望能帮助你解决这个问题:

1. 使用后端中转(服务器端代理)
如果CORS头的问题依然无法解决,可以尝试通过后端代理服务器的方式来绕过浏览器的跨域限制。具体步骤是:

在你自己的服务器上设置一个中转服务。
前端请求你的服务器,服务器再向优酷API发出请求并获取数据。
因为前端访问的是你自己的服务器,所以不会有跨域问题,你的服务器从优酷获取的数据可以直接返回给前端。
示例:

前端:请求你服务器的API /proxy/get-data
服务器:接收前端请求,向https://api.youku.com/uploads/create.json发起请求,获取到数据后再返回给前端。
Node.js 代码示例:
  1. const express = require('express');
  2. const axios = require('axios');
  3. const app = express();

  4. app.get('/proxy/get-data', async (req, res) => {
  5.     try {
  6.         const response = await axios.get('https://api.youku.com/uploads/create.json', {
  7.             params: req.query // 将前端传递的参数透传
  8.         });
  9.         res.json(response.data); // 将数据返回给前端
  10.     } catch (error) {
  11.         res.status(500).send('服务器代理请求失败');
  12.     }
  13. });

  14. app.listen(3000, () => {
  15.     console.log('代理服务器运行中...');
  16. });
复制代码

2. 尝试使用不同的浏览器或者开发工具
如果是浏览器的CORB机制导致的限制,可以尝试通过一些开发工具或者不同浏览器来绕过这个限制,特别是在开发环境下:

Kiwi Browser 插件:Kiwi Browser是一个支持Chrome扩展的安卓浏览器,可能有某些扩展能帮助你禁用CORB或CORS检查。
CORS插件:在Chrome、Firefox等浏览器上,安装CORS相关的插件,比如Allow CORS,临时绕过跨域限制(不推荐在生产环境中使用)。
3. 检查是否存在同源策略限制
如果你已经通过代理服务器并添加了CORS头但依然无效,可能是因为你涉及的某些资源有更严格的同源策略。例如:

API或资源可能有白名单策略,优酷只允许某些特定域名的请求。
某些云服务或CDN提供商会有额外的跨域限制。
可以联系优酷的技术支持或查阅他们的API文档,确认是否有额外的配置或授权方式来绕过这些限制。

4. 使用Postman等工具测试API
通过Postman或其他类似工具测试你对优酷API的请求,看看是否有不同的响应。这样你可以排除前端和代理服务器设置的问题,直接确认API是否正常返回数据。

如果这些方法仍然无法解决问题,可能是优酷的API本身对跨域请求有严格限制,或者需要特定的授权头等内容。这时与优酷技术支持沟通,询问是否有专门的跨域请求解决方案可能是更有效的办法。
爱生活,爱奶昔~
回复

使用道具 举报

发表于 2024-10-22 16:29:11 | 显示全部楼层
根据你提供的错误信息,出现了跨域读取阻止(CORB)的问题,即使你通过代理更改了域名,这个问题依然存在。主要原因是Youku的API响应头中缺少跨域资源共享(CORS)的相关设置,并且MIME类型为text/plain,这不是浏览器允许读取的安全类型。

你可以尝试以下几种方法来解决这个问题:

检查MIME类型: 确保服务器返回的内容类型是正确的,例如,如果你期望返回JSON数据,MIME类型应该是application/json,而不是text/plain。

设置CORS头: 确保服务器的响应头中包含以下内容:

Access-Control-Allow-Origin: * 或者指定你的网站域名
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
你可以在代理服务器中添加这些响应头,确保代理转发的内容可以跨域访问。

使用CORS代替JSONP: 你提到的请求带有callback参数,这意味着你可能在使用JSONP进行跨域请求。JSONP已经不再是推荐的方式,建议切换到CORS来进行跨域访问。

代理配置问题: 再次检查你的代理配置,确保请求被正确转发,并且响应头中添加了所需的CORS头信息。如果代理配置正确,而Youku的服务器不支持跨域访问并返回非标准的MIME类型,可能问题就来自于Youku服务器。

这些步骤可以帮助你排查跨域问题。如果Youku不支持跨域访问且你无法控制服务器设置,可能需要考虑其他方式来解决此问题。
[发帖际遇]: 一个袋子砸在了 yagamil 头上,yagamil 赚了 2 点数. 幸运榜 / 衰神榜
爱生活,爱奶昔~
回复

使用道具 举报

楼主| 发表于 2024-10-22 16:38:55 来自手机 | 显示全部楼层
yagamil 发表于 2024-10-22 16:29
根据你提供的错误信息,出现了跨域读取阻止(CORB)的问题,即使你通过代理更改了域名,这个问题依然存在。 ...

这些方法试过了,CORS头这一项折腾两天,人都麻了,然后今天也试了代理服务器中加请求头,目前还是不行
爱生活,爱奶昔~
回复

使用道具 举报

Powered by Nyarime. Licensed

GMT+8, 2024-12-6 01:06 , Processed in 0.024361 second(s), 12 queries , Gzip On, Redis On
发帖际遇 ·手机版 ·小黑屋 ·RSS ·奶昔网

登录切换风格
快速回复 返回顶部 返回列表