【问题标题】:How to get a url from a php hyperlinlk with post data如何从带有帖子数据的 php 超链接中获取 url
【发布时间】:2013-10-06 20:47:47
【问题描述】:

我正在开发一个下载页面,该页面使用 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... Origin http://www.example.co.uk 不被 Access-Control-Allow-Origin 所允许。

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

【问题讨论】:

    标签: javascript php jquery ajax amazon-s3


    【解决方案1】:

    由于Cross-Domain request,您需要一个后端来进行网络服务调用。

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

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

    这对于使用 PHP、Rails 或 Node.js 来说是相当简单的,您应该可以在网上找到示例。

    【讨论】:

    • 它可能比你想要的更多,只是为了获得最终的重定向 URL,但我不确定你会怎么做。
    【解决方案2】:
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多