Я создаю службу, как сказано в этом учебнике, я вижу, что когда я печатаю в браузере этот 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 не разрешено Access-Control-Allow-Origin.
Почему это происходит?
Код 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!");
});
});
Добавьте заголовок ответа на свой сервер:
Access-Control-Allow-Origin: from-specific-domain.com
Вы также можете сделать это с помощью php:
<?php
header('Access-Control-Allow-Origin: from-specific-domain.com');
?>
Вы должны разрешить кросс-домен 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>
Кроме того, ознакомьтесь с этой статьей о запросе AJAX с перекрестным доменом с ответом JSON
drupal_add_http_header()
, возможно, в реализации hook_init()
в пользовательском модуле