当响应位置的域发生变化时,使用nginx的proxy_redirect
我正在使用SoundCloud的API制作一个Web应用程序.请求MP3流传输涉及两个请求.我举个例子.首先:
这将返回302,其中包含指向实际MP3的临时链接(每次都会有所不同),例如:
我遇到的问题是我试图通过JavaScript的XMLHTTPRequest加载MP3,出于安全原因,浏览器无法跟踪302,因为ec-media.soundcloud.com没有设置标题说它对浏览器是安全的通过XMLHTTPRequest访问. 因此,我没有使用SoundCloud URL,而是在nginx中设置了两个位置,因此浏览器只与托管我的应用程序的服务器进行交互,并且不会出现任何安全错误:
所以myserver / soundcloud / tracks / 59815100将302返回到/myserver/soundcloud/media/xYZk0lr2TeQf.128.mp3…etc,然后转发MP3. 这有效!但是,我遇到了麻烦.有时302位置不是ec-media.soundcloud.com,它是ak-media.soundcloud.com.可能还有更多的服务器,可能随时会出现更多的服务器.有没有办法可以处理任意302位置,而无需手动输入每个可能的变化? 或者nginx是否可以处理重定向并返回第二步的响应?所以myserver / soundcloud / tracks / 59815100跟在幕后302并返回MP3? 浏览器会自动跟随重定向,因此我无法对客户端的初始响应执行任何操作. 我是nginx的新手并且有点头脑,如果我错过了一些明显的东西,或者超出了nginx的范围,那么道歉.非常感谢阅读. 您可以在proxy_redirect中使用正则表达式.见the docs.
就像是:
应该做的伎俩. 顺便说一句,你在做一些奇怪的事情:
它等于这个:
阅读documentation总是一个好主意. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |