У меня есть сервер, который возвращает данные, и я даю этот ответ в коде:
header('Access-Control-Allow-Origin: *');
echo 'the response';
теперь, когда я использую инструменты разработчика Chrome для проверки ответа, я вижу, что: «Access-Control-Allow-Origin» установлен на «*», так что это хорошо.
The response from the server:
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Connection:keep-alive
Content-Type:application/json
Date:Thu, 16 Oct 2014 07:45:34 GMT
Server:nginx/1.1.19
Set-Cookie:laravel_session=eyJpdiI6IlhhdTlOSHJMYmlnWm44bE1TTnBYXC9uMUhZQ1wvN21UWFZzMWlHRm5lb3ZtND0iLCJ2YWx1ZSI6InZSZjJZNFpQaldNblJiT05iK08wK3VTQXJRQXBSZ0paOXdIdjJyOGNPZFlaOUZNNVwvOVYzalBnaGVSUkc2YWF2THBGcnQwVHhocUFHQyt6S296bmZKZz09IiwibWFjIjoiYjQxZjhlYjI4ZGJkMTk1NWZjZmYyNWI3MTg2YmU4NTM3Y2MwMDNiOTA3YmQxZmNkYjVhZmUwOTkyYzQ0ZGRiMiJ9; expires=Thu, 16-Oct-2014 09:45:34 GMT; Max-Age=7200; path=/; httponly
Transfer-Encoding:chunked
но когда я пытаюсь получить доступ к нему с помощью моего углового проекта, я получаю эту ошибку:
XMLHttpRequest cannot load http://MYSITE.co/api/posts/all. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access. The response had HTTP status code 405.
есть идеи почему?
Как вы пытаетесь получить доступ к ресурсу? Для iframe, а также для использования HTML-шаблонов мне пришлось вызвать метод $ sceDelegateProvider.resourceUrlWhitelist ().
angular.module('myApp', [ ])
.config(function($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist([
// Allow same origin resource loads.
'self',
// Allow loading from our assets domain. Notice the difference between * and **.
'http://MYSITE.co/**']);
});
Из документации Angular: «Это позволяет получить / установить белые и черные списки, используемые для обеспечения безопасности URL-адресов, используемых для поиска шаблонов Angular».
Я использовал этот пакет:
github.com/barryvdh/laravel-cors
и это сработало отлично