【问题标题】:JQuery Unable to retrieve data drupal services through localhost:8888JQuery 无法通过 localhost:8888 检索数据 drupal 服务
【发布时间】:2013-09-26 15:31:07
【问题描述】:

我已经按照本教程的说法创建了一个服务,当我在浏览器中输入这个 url 时,我可以看到:

http://{localhost}:8888/drupal2/test_test/node/1.jsonp

http://{localhost}:8888/drupal2/test_test/node/1.json

http://{localhost}:8888/drupal2/test_test/system/connect.json

我得到了 json 回调。但是当它在 jquery 代码中时,我得到了

XMLHttpRequest 无法加载 http://{localhost}:8888/drupal2/test_test/node/1.json?type=post&format=json。 来源 http://{localhost}:8383 不允许 访问控制允许来源。

为什么会这样?

jQuery 代码:

$(function() {
    var urlis = "http://localhost:8888/drupal2/test_test/node/1.json";
    $.getJSON(urlis, {
        type: 'post', 
        format: "json"
        }).done(function(afterdone) {
        console.log("JSONP Data");
    })
     .fail(function(error) {
        console.log("NO!");
    });
});

【问题讨论】:

    标签: php jquery web-services drupal-7


    【解决方案1】:

    在您的服务器上添加响应标头:

    Access-Control-Allow-Origin: from-specific-domain.com
    

    你也可以用 php 做到这一点:

    <?php 
        header('Access-Control-Allow-Origin: from-specific-domain.com');
    ?>
    

    【讨论】:

    • 所以,它奏效了。我创建了一个模块,其中的代码是:'function add_header_init(){header('Access-Control-Allow-Origin: *');}' 解决了这个问题!谢谢
    【解决方案2】:

    您需要允许跨域 AJAX。要在 PHP 中执行此操作,请修改脚本:

    header('Access-Control-Allow-Origin: domain.com');
    

    或修改您的 htaccess 或 apache conf 文件:

    <FilesMatch "\.*$">
      <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "domain.com"
      </IfModule>
    </FilesMatch>
    

    另外,看看这篇关于Cross domain AJAX request with JSON response的文章

    【讨论】:

    • 我应该把这条线放在哪里?
    • @Dori(不会跟踪你,保证;)使用drupal_add_http_header(),可能在自定义模块中实现hook_init()
    • @Kasia 如果只需要允许一个域,通配符可能不是最好的主意
    • O.K 我创建了一个模块,其中的代码是:'function add_header_init(){ drupal_add_http_header($name="service_header", $value = "Access-Control-Allow-Origin: *", $append = FALSE); }'。这并没有解决问题...
    • 试试它的 .htaccess 版本
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2015-08-12
    • 2019-09-25
    • 2013-05-21
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多