0

我正在使用 DLGuard 在商店购买后创建自定义文件下载 URL 的下载页面。

例如:

<a href="downloadfile.php?r=11034705&p=42">Download</a>

将是页面上的超链接,但单击此链接会将您定向到 url:

foo.s3.amazonaws.com/example.mp3?AWSAccessKeyId=...

我的问题是有可能找出 .mp3 的 url 而不必使用 ajax 调用离开页面?到目前为止,我已经尝试了以下代码:

<script>
    var downloadURL = $("a.button").attr('href');
    console.log(downloadURL);

$.ajax({
    type: 'GET',
    url: downloadURL,
    success: function () {
        alert("done!");
    }
});

</script>

但只会收到以下错误消息:

XMLHttpRequest 无法加载http://foo.s3.amazonaws.com/example.mp3 ... Access-Control-Allow-Origin 不允许来源http://www.example.co.uk 。

我想要的只是存储为字符串的 .mp3 文件的 url。任何人都可以帮忙吗?

4

3 回答 3

1

由于跨域请求,您将需要一个后端来进行 Web 服务调用。

浏览器不允许您使用 JavaScript 访问另一个域。

但是,您可以使用 PHP、Rails、Node.js 等创建一个基本的 Web 服务,它会为您调用。因此,您使用 AJAX 调用您自己的 Web 服务,它会调用您想要的 URL(有许多库可以让这更容易)。然后让您的 Web 服务将结果传回给您,您将在 AJAX 成功回调中检索数据。

这对于使用 PHP、Rails 或 Node.js 来说是相当简单的,而且您在网上查找示例应该没有问题。

于 2013-09-30T21:44:41.277 回答
0

对同一域上的服务器进行 ajax 调用。然后在php中这样做:

$page_data = file_get_contents('foo.s3.amazonaws.com/example.mp3?AWSAccessKeyId=...');
echo $page_data;

或使用 curl 等的任何其他类型的 php 获取请求。

于 2013-09-30T22:35:29.620 回答
0

请按照这些 URL 了解跨源政策,

https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

于 2013-09-30T20:52:02.797 回答