php - 简单代理无法获取 JSON 响应

标签 php javascript json proxy cross-domain

我正在尝试通过 php 代理连接到站点(此代理: https://raw.github.com/cowboy/php-simple-proxy/master/ba-simple-proxy.php ),这是对响应执行某些操作的 JavaScript 函数:

编辑:代码现在看起来像这样。还是没有雪茄。

function exista(word) {

    alert(word);
    var proxy = 'ba-simple-proxy.php?url=';
    var uri = "http://api.wordreference.com/0.8/ff175/json/roen/" + word;
    uri = encodeURIComponent(uri);
    alert(proxy + uri);
    var cuvantulexista = 1;
    jQuery.ajax({
        "async": false,
        "url": proxy + uri,
        "dataType": 'json',
        "method": "GET",
        "success": function (data) {
            alert("HERE!");
            if (data.Error || data.Response)
                cuvantulexista = 0;
        }
    });
    return cuvantulexista;
}

php 文件与包含上述函数的 js 文件位于同一文件夹中,并且位于包含 html 文件的 public 文件夹中。

问题是我没有得到任何回应,而且我也无法真正说出原因。

我还在 html 中包含了 php,如下所示:

<?php
    include("js/ba-simple-proxy.php");
?>

我很抱歉我的极端新手,但这是我第一次使用 php 和跨域通信。谢谢。 :)

编辑:如果有帮助的话,该页面未托管在域上。

Edit2:所以,我在没有 --disable-web-security 的情况下打开了 Google Chrome,然后再次收到此错误:

XMLHttpRequest cannot load file:///home/bogdan/Scrabble-Online/public/ba-simple-proxy.php?url=http%3A%2F%2Fapi.wordreference.com%2F0.8%2Fff175%2Fjson%2Froen%2FRHE. Origin null is not allowed by Access-Control-Allow-Origin. 

但是,如果我在本地主机上启动它,它不会显示该消息。它只是无法连接。我现在很困惑。

最佳答案

要发出跨端请求,您的目标页面需要允许您访问:

header('Access-Control-Allow-Origin: *');

您可以将其添加到代理脚本的顶部。最好将 * 替换为您的域名。

但是 file:// URL 无法获得授权。所以你需要有一个真正的域名。

另请参阅https://stackoverflow.com/a/3744697/956397

关于php - 简单代理无法获取 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330027/

相关文章:

javascript - 使用 jEditable、jQuery 和 DataTables 更新表中的单元格

php - Gzip 还是 ob_flush()?哪个更好?

php - 仅查找没有 child 的 ID ORDER BY parent 和祖 parent

javascript - polymer 1.0 : iron-pages not switching pages with children events

javascript - 在循环中调用异步函数时避免重复创建函数

javascript - 从JSP返回JSON对象到JS

php - jQuery无法更改JS可以更改的值,因为该库已过期

javascript - Vue.js 全局事件不起作用

javascript - 如何将对象名称添加到表列

c# - 如何向 RESTful WCF 服务传递和使用 JSON 参数?