Я пытаюсь получить изображения через магистраль с сервера. Бэкэнд-приложение использует CakePHP (что не важно в данный момент). Бэкэнд возвращает ответ JSON:Как получить изображение через позвоночник?
{"id":"4","waypoint_id":"56","user_id":"1","name":"Penguins.jpg","type":"image\/jpeg","size":"777835","created":"2014-03-10 18:05:29","modified":"2014-03-10 18:05:29","owner":"Nikel Weis"}
Какой штраф до сих пор - но как только я добавить атрибут данных, который содержит фактическую блоб из базы данных не работает. Я пытался кодировать его в base64 строку (в PHP) с:
$response['data'] = base64_encode($response['data']);
Но тогда клиент возвращает:
OPTIONS http://mytour.localhost/api/file/4 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4400' is therefore not allowed access.
Но заголовок устанавливается. Мой файл модели в позвоночнике выглядит (довольно прямо вперед) это:
define([
'jquery',
'jqm',
'underscore',
'backbone',
], function($, jqm, _, Backbone) {
File = Backbone.Model.extend({
idAttribute: 'id',
urlRoot: '/api/file',
initialize:function(attributes, options) {
},
});
return File;
});
Так как я могу получить (в формате base64) файлы, используя позвоночник? Или мой подход совершенно не так?
EDIT: Переданные заголовки:
$this->response->header('Access-Control-Allow-Origin', '*');
$this->response->header('Access-Control-Allow-Headers', 'X-Requested-With');
Я могу получить ответ, когда base64encoded строка нет.
EDIT - То, что я должен был упомянуть, заключается в том, что я использую рябь, чтобы эмулировать среду телефонных разговоров. Теперь я понял, несколько вещей:
Проблема была не кодирование base64 - проблема произошла, когда строка превысила около 4000 символов. Реакция сервера не была правильно обработана пульсацией.
Ripple имеет функцию прокси-сервера для перекрестных доменных запросов. Я отключил этот прокси. Путем переключения прокси на локальный или удаленный ограничение в ~ 4000 символов в JSON-Response не срабатывает. Это не было недостатком JSON или что-то из-за того, что в строках, переданных клиенту, нет ограничений.
CORS. какие заголовки вы задаете в ответе сервера? – wayne
Отредактированный вопрос. –