Это хорошо сработало для нас:
заголовок ('Access-Control-Allow-Origin: *');
Добавьте это к методу контроллера перед возвратом для одной конечной точки, в конструктор класса контроллера для всех конечных точек в этой ветви или выше, чтобы обеспечить его широкую область.
Если вы разрешаете доступ только определенным сайтам, используйте заголовок ('Access-Control-Allow-Origin: example.com') или что-то вроде заголовка ('Access-Control-Allow-Origin:'. $ Remote_domain). Где $ remote_domain устанавливается динамически на основе некоторых переданных в токене или тому подобное. Ознакомьтесь с разделом общего доступа к ресурсам (CORS), чтобы узнать, почему нужно ограничивать использование подстановочных знаков *.
<?php
class Say {
__construct(){
header('Access-Control-Allow-Origin: *'); //Here for all /say
}
function hello($to='world') {
header('Access-Control-Allow-Origin: *'); //Here for just /say/hello
return "Hello $to!";
}
}
Вышеописанное работает для GET и POST, другие действия требуют дополнительной информации заголовка от рестлера. Вот несколько примеров:
header ('Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS');
header ('Access-Control-Allow-Headers: what_headers_you_allow, header1, header2');
Для IE9 и ниже вам понадобится взломать JSONP. В Restler есть пример расширения класса iFormat для переноса выходного стиля API JASONP.
Проверьте взломы Mozilla для получения подробной информации о CORS. http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
И посмотрите ОПЦИИ в PHP REST API