Intereting Posts
Как загрузить XML, когда PHP не может указать правильную кодировку? Magento – отдельный пользовательский атрибут продукта с массивом значений как изменить стили CSS динамически с помощью php / Mysql..и хотите создать темы, которые уникальны для каждого пользователя? Интеграция facebook в php, дающая недопустимый подписанный запрос с данными oAuth Автоматическая отправка формы с использованием таймера Facebook API: как публиковать на собственной стене приложения без входа в систему Как декодировать строки заголовков писем с их типом кодировки в них на PHP Как отредактировать этот запрос MySQL, чтобы включить дополнительный столбец с count и avg? Получить подстроку между двумя символами в javascript добавить класс к указанному элементу Как игнорировать свойство null с помощью JsonSerializable :: jsonSerialize ()? Передача php-массива в javascript с использованием JSON Выделите поисковый запрос в mysql php search Создание нескольких изображений с помощью PHP Как остановить навигационную панель вверху страницы при прокрутке вниз

Нет заголовка «Access-Control-Allow-Origin»

Я использую angular.js для создания приложения ReSTful для мобильных устройств с использованием кордовы. для серверной части я использую slim framework.all в соответствии с этим учебным пособием 🙁 http://www.angularcode.com/user-authentication-using-angularjsphp-mysql/ )

Но когда я загрузил папку api на сервер, возникает ошибка: заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Следовательно, «localhost» источника не допускается. В ответе был код статуса HTTP 404.

Я читал о добавлении «Access-Control-Allow-Origin» и реализовал его по этой ссылке: http://help.slimframework.com/discussions/problems/810-no-subject

$app->get('/session', function() { **$response->header('Access-Control-Allow-Origin', '*');** $db = new DbHandler(); $session = $db->getSession(); $response["uid"] = $session['uid']; $response["email"] = $session['email']; $response["name"] = $session['name']; echoResponse(200, $session); }); 

также попробовал

 $app->get('/session', function() { **$session->header('Access-Control-Allow-Origin', '*');** $db = new DbHandler(); $session = $db->getSession(); $response["uid"] = $session['uid']; $response["email"] = $session['email']; $response["name"] = $session['name']; echoResponse(200, $session); }); 

Я все еще получаю ту же ошибку.

-> И последняя строка правильная? echoResponse(200, $session);

Заранее спасибо 🙂

Обновить

Я использую тот же файл на firefox, и хром и хром могут получить доступ к файлу на сервере. Кроме того, один файл JSON на моем сервере ранее пользовался кордовым приложением и теперь не работает. Вызывающий код точно такой же,

 .controller('ListController', ['$scope', '$http', function($scope, $http) { $http.get('js/data.json').success(function(product_data) { $scope.artists = product_data; }); }]) 

Откройте Chrome с помощью флага --disable-web-security . Это предотвратит появление и возможность разработки на вашем рабочем столе.

Кордова / PhoneGap в основном делают это для вас, когда он находится в форме приложения. Возможно, вам придется посмотреть, как открыть его с помощью флага, в зависимости от того, в какой операционной системе вы находитесь.

Кроме того, не продолжайте использовать ваш браузер для обычных действий с включенным флагом . Если возможно, также используйте CLI, чтобы открыть новый профиль пользователя, чтобы он не влиял на существующий профиль и не открывал вас для любых уязвимостей безопасности.

Некоторые веб-браузеры запрещают CORS из localhost (или любой псевдоним для localhost, например 127.0.0.1). Решение заключается в доступе к нему с использованием URL-адреса, отличного от localhost.

Одним из таких URL-адресов, который может работать, является ваш IP-адрес.

Если вы предпочитаете не использовать свой IP-адрес (возможно, потому, что он назначается случайным образом вашим маршрутизатором при каждом подключении), вы можете назначить поддельный домен себе, изменив /etc/hosts (или Windows\System32\Drivers\etc\hosts на Windows).

Например, добавьте это в /etc/hosts :

 127.0.1.1 thismachine 

Затем вы можете получить доступ к своему веб-серверу, набрав http://thismachine в своем веб-браузере.