【问题标题】:Dead simple cross-domain php script死简单的跨域php脚本
【发布时间】:2011-03-31 11:21:11
【问题描述】:

我正在寻找一个简单的脚本,我可以在其中执行类似的操作

$.getScript('fetcher.php?url=' + escape('http://www.google.com') + '&callback=console.log');

响应应该是一个很长的一行,如下所示:

console.log({responseText: '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Google</title><script>windo...'})

它不应该超过 10 行代码,而且它不可能不存在。

我在 XAMPP 中使用 php,并且只是使用它来构建数据库,因此我不需要包含任何多余的东西(没有获取与发布,没有包含数据),只需 file_get_contents$_GET。当然我还是想编码 url

【问题讨论】:

  • 你限制每行的字符数吗?如果没有,我可以写在 1 行:D
  • @thaolt:可读性强的脚本怎么样,只是选项不要太密集
  • 这个链接很好地描述了这个问题:bit.ly/eDLd4S
  • @SeanKinsey:我问是因为我认为这已经存在并且不想重新发明轮子

标签: php javascript jquery cross-domain


【解决方案1】:

这个怎么样,更新了

<?php
    // fetcher.php
    $url = $_GET['url'];
    $callback = $_GET['callback'];
    $read = file_get_contents($url);
    $read = addslashes(htmlspecialchars(str_replace("\n","\\n",$read)));
?>
<script>
    <?php echo $callback ?>({responseText: '<?php echo $read; ?>'});
</script>

【讨论】:

  • 我想保留'\n'(html 中的换行符)成为'\\n'(在响应中),以便在字符串中它是换行符。我也希望能够使用转义的 url
  • 这个我还没测试,你试试dakis的代码,我测试一下
  • 我没有打扰,我没有 curl
  • 好的,我想帮你,str_replace("\n","\\n".. 好像不行
  • 它现在运行正常,但我不知道它是否符合您的需要
【解决方案2】:

fetcher.php

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $_GET['url']);
    echo curl_exec($ch);
    curl_close($ch);
?>

javascript

$.get("fetcher.php", {url: "http://www.google.com/"}, function(response) {
    console.log(response);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2011-05-31
    • 2012-05-27
    • 2012-09-15
    • 2012-04-28
    • 2011-03-06
    • 2012-08-18
    • 2010-11-06
    相关资源
    最近更新 更多