Azure и CORS Access-Control-Allow-Origin с ajax и php

Во-первых, я не в веб-мире нашего мира, так что будьте милы с бэкенд-парнем.

Краткая предыстория: для личных нужд я разработал расширение для Google Chrome. По сути, это веб-страница, загруженная в хромированные окна, и ... да, это все. Все находится на стороне клиента (сценарии, стили, изображения и т. Д.). Только данные поступают с сервера через вызовы ajax. Задание cron вызывает php-скрипт каждый час для создания двух файлов. Во-первых, data.json содержит «самые последние» данные в формате json. Еще один hash.json содержит хеш данных. Клиентское приложение Chrome использует локальное хранилище. Если удаленный хэш отличается от локального, он просто получает файл данных с удаленного сервера.

Поскольку у меня есть учетная запись BizSpark в Azure, моей первой идеей было: веб-сайт Azure с php для сценария, простая домашняя страница, сгенерированный файл и планировщик Azure для заданий.

Я разработал все локально, и все работает нормально ... но как только на лазурной платформе я получаю эту ошибку

XMLHttpRequest cannot load http://tso-mc-ws.azurewebsites.net/Core/hash.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:23415' is therefore not allowed access.

Но чего я действительно не могу понять, так это того, что я могу (и вы тоже) получить файл в моем браузере ... Так что я просто не понимаю ... Я также пробовал на основе какое-то сообщение, которое я нашел на SO и другом сайте, чтобы управлять конфигурацией, добавлять дополнительные заголовки, похоже, ничего не работает ...

Любая идея ?


person Emmanuel Istace    schedule 27.01.2014    source источник


Ответы (2)


Но чего я действительно не могу понять, так это того, что я могу (и вы тоже) получить файл в моем браузере ... Так что я просто не понимаю его

Поэтому, когда вы вводите http://tso-mc-ws.azurewebsites.net/Core/hash.json в адресной строке браузера, это не междоменный запрос. Однако, когда вы делаете запрос AJAX из приложения, которое работает в другом домене (http://localhost:23415 в вашем случае), это междоменный запрос, и поскольку CORS не включен на вашем веб-сайте, вы получаете сообщение об ошибке.

Что касается включения CORS, ознакомьтесь с этой веткой: Запрос HTTP OPTIONS на веб-сайтах Azure не выполняется из-за CORS. Я никогда не работал с веб-сайтами PHP / Azure, поэтому могу ошибиться с этой ссылкой, но, надеюсь, она укажет вам правильное направление.

person Gaurav Mantri    schedule 27.01.2014
comment
Благодаря тебе, Гаурав Мантри, я уже прочитал эту статью, ничего не изменилось. Я нашел способ заставить его работать, посмотрите ответ. Спасибо за вашу помощь ! - person Emmanuel Istace; 27.01.2014

Хорошо, может быть, это будет маленький ответ тролля, но не моя точка зрения (я консультант .net, так что ... ничего против MS).

Я выбираю виртуальную машину linux azure, устанавливаю apache и php, настраиваю apache, устанавливаю некоторые права и определяю заголовок для CROS и настраиваю cron за +/- 30 минут ... Поскольку моя цель - запустить его, проблема решена , он работает.

person Emmanuel Istace    schedule 27.01.2014