Недавно я переместил наши серверы из Rackspace CloudSites (работает на Apache/Linux) на веб-сайты Windows Azure. После миграции все запросы JQuery AJAX в нашем REST API начали сбой из-за CORS.
Мы используем пользовательские заголовки, поэтому jQuery делает запрос перед полетом HTTP OPTIONS перед запуском фактических вызовов API. Проблема заключается в том, что запрос OPTIONS, похоже, не доходит до моего PHP-кода и вместо этого возвращен каким-то другим объектом (очевидно, веб-сервером), с которым я, похоже, не контролирую.
Я использую следующие заголовки уже пару лет, поэтому я уверен, что проблема не в PHP-коде:
<?php
$this->output->set_header("Access-Control-Allow-Origin: *");
$this->output->set_header("Access-Control-Allow-Methods: GET,POST,DELETE,HEAD,PUT,OPTIONS");
$this->output->set_header("Access-Control-Allow-Headers: X-Olaround-Debug-Mode, Authorization, Accept");
$this->output->set_header("Access-Control-Expose-Headers: X-Olaround-Debug-Mode, X-Olaround-Request-Start-Timestamp, X-Olaround-Request-End-Timestamp, X-Olaround-Request-Time, X-Olaround-Request-Method, X-Olaround-Request-Result, X-Olaround-Request-Endpoint" );
?>
Я предполагаю, что проблема специфична для Azure Websites, так как код, похоже, отлично работает на моей машине разработки (Windows 8/IIS 8.0). Я новичок в Azure (и в основном на базе Windows), поэтому я почти не знаю, как подойти и отладить эту проблему, поскольку веб-сайты Azure позволяют очень минимально контролировать.