缺少 CORS 400 标头(以及其他问题)

Posted

技术标签:

【中文标题】缺少 CORS 400 标头(以及其他问题)【英文标题】:CORS 400 header missing (among other issues) 【发布时间】:2019-11-30 19:49:25 【问题描述】:

这是我第一个使用 javascript 的项目(基本上来自这里的分叉代码:https://www.kkhaydarov.com/audio-visualizer/)

我正在尝试构建一个可视化工具来响应我托管的音频。

问题: - 抛出 CORS 400 错误(我在源 URL 中使用 https://cors-anywhere.herokuapp.com/http://) - 音频无法识别

这是我在 codepen 上的项目的链接:https://codepen.io/beewash92/project/editor/ZGWOQr 代码也存放在我的github上:https://github.com/beewash/js-audio-visualizer

enter code here

我在 *** 和网络上搜索了其他帖子,但仍然遇到问题。感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果您尝试在 chrome 中浏览链接,您将收到如下消息

Missing required request header. Must specify one of: origin,x-requested-with

您需要按上述定义自定义请求标头才能使其正常工作。请参考 apihere,因为它清楚地说明了您应该事先做什么。

您应该创建一个带有如下标头的请求

fetch('https://cors-anywhere.herokuapp.com/http://soundcloud.com/gentttry/10999-1', 
    'headers': 
        'Origin': 'soundcloud.com'
    
)
.then(res=>res.blob())
.then(blob=>URL.createObjectURL(blob))
.then(audio_src=>
    // Then init your audio here and assign the url
)

【讨论】:

问题是链接没有返回音频。您需要找到实际的音频二进制链接

以上是关于缺少 CORS 400 标头(以及其他问题)的主要内容,如果未能解决你的问题,请参考以下文章

为啥浏览器允许设置一些没有 CORS 的标头,但不允许设置其他标头?试图避免预检

CORS 标头在浏览器中被剪切,状态码 >= 400

缺少 CORS 标头“Access-Control-Allow-Origin” - CORS 请求未成功

django-cors-headers 和 nginx 配置:预检响应缺少 CORS 标头

仅在 Angular 资源请求中缺少 CORS 标头

CORS:响应中缺少授权标头(jQuery / Spring)