Имея приложение Perl Catalyst, которое создает JSON, мне нужно прочитать этот контент JSON с помощью jQuery на HTML-странице, обслуживаемой сервером Apache. Оба приложения, Catalyst и Apache, работают на одном хосте.
Когда я получаю доступ к URL-адресу Catalyst из Apache, я получаю сообщение об ошибке
Access to XMLHttpRequest at 'http://localhost:3000/abc/json_list' from origin 'http://localhost:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Как я писал во многих темах, заголовок (или больше) должен быть установлен. В этом случае катализатор должен быть установлен, но я не знаю, как это сделать.
Любой намек?
Таким образом, чтобы приложения считались имеющими одинаковое происхождение, недостаточно, чтобы оба приложения работали на одном сервере. Два приложения также должны обслуживаться с одним и тем же именем хоста, одним и тем же номером порта и одним и тем же протоколом (оба http или оба https). В противном случае браузеры будут рассматривать любой запрос как запрос из разных источников, если он сделан кодом JavaScript внешнего интерфейса, работающим на сервере Apache, на сервер Perl Catalyst. Вот почему вам нужно включить CORS на сервере Perl Catalyst. Для этого см. lists.scsys.co.uk/pipermail/catalyst/2018-June/…

Catalyst позволяет вам устанавливать заголовки ответов, используя метод header для объекта ответа.
$c->res->header( "Access-Control-Allow-Origin" => "http://localhost:8888" );
Рассмотрите возможность использования контроллера sub auto или с использованием существующего промежуточное ПО, если у вас есть несколько конечных точек, которым необходимо предоставить разрешение через CORS.
Вы не показываете никакого соответствующего кода. Пожалуйста, редактировать вашего сообщения, чтобы показать соответствующий код, генерирующий ответ. Вы устанавливаете заголовки в приложении Catalyst, вызывая метод
->header(...)Катализатор:: Ответ, поэтому я бы начал с этого.