2013-09-26 47 views
0

我已創建一個服務作爲本教程中說的,我可以看到,當我輸入到瀏覽器這個網址:的JQuery無法通過localhost來檢索數據的Drupal服務:8888

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:// {}本地主機:8888/drupal2/test_test /節點/ 1.json類型=張貼&格式= 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!"); 
    }); 
}); 

回答

1

添加響應標頭在您的服務器上:

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

您也可以使用php來做到這一點:

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

所以,它工作。我創建了一個模塊,其中的代碼是:'function add_header_init(){header('Access-Control-Allow-Origin:*');}'解決了問題!謝謝 – Dori

1

您需要允許跨域AJAX。要做到這一點在PHP中,修改scirpt:

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

+0

我應該在哪裏,就把這行? – Dori

+1

@Dori(沒有跟蹤你,承諾;)使用['drupal_add_http_header()'](https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drupal_add_http_header/7),可能在在自定義模塊中執行'hook_init()' – Clive

+0

@Kasia如果只需要單個域名,通配符可能不是最好的主意 – Clive

相關問題