Назад | Перейти на главную страницу

Предупреждение CSRF на CentOS, где его не должно быть

Я работаю над своей собственной ERP в laravel с отдельным фронтом Vue.js. Некоторое время я работал на сервере Windows с apache, и он работал нормально. Вначале настройка была немного сложной, так как я не запускал vue из apache, а использовал npm run dev, поэтому использовал собственный сервер dev. Я смог его собрать и протестировать, обслуживая через порт 80.

Все идет нормально.

Я хотел пройти через действия и сделать образец установки для производства и перенести все на CentOS, и здесь я столкнулся с предупреждениями CSRF на интерфейсе.

Если вам интересно, у меня включены заголовки cors на моем компьютере с Windows, но мне не нужно было устанавливать что-то еще вроде этого:

Набор заголовков Access-Control-Allow-Origin "*"

в настройках моего каталога, которые часто советуют здесь, когда вы сталкиваетесь с проблемами предварительной проверки CSRF.

Это ошибка, которую я получаю в CentOS, которую я не получаю в Windows:

Доступ к XMLHttpRequest по адресу 'http://192.168.2.100:8029/api/oauth/get-token'от происхождения'http://192.168.2.100'заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: заголовок' Access-Control-Allow-Origin 'содержит несколько значений' *, http://192.168.2.100', но разрешен только один.

PS Я обслуживаю laravel на порту 8029, обслуживаемом apache. Я слушаю оба порта 80 и 8029 (интерфейс vue и сервер laravel)

Вот файл vhost:

<VirtualHost *:8029>
    ServerAdmin emailhere
    DocumentRoot "/var/www/html/backendpathhere/"
    ServerName webservices7.zeintek.com
    ServerAlias www.webservices7.zeintek.com
  <Directory "/var/www/html/backendpathhere/">
    AddHandler cgi-script .cgi .pl .py 
    Options Indexes Includes FollowSymLinks ExecCGI
    AllowOverride All 
    Order Allow,Deny
    Allow From All 
   </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin emailhere
    DocumentRoot "/var/www/html/frontendpathhere/"
  <Directory "/var/www/html/frontendpathhere/">
    AddHandler cgi-script .cgi .pl .py 
    Options Indexes Includes FollowSymLinks ExecCGI
    Options +ExecCGI
    AllowOverride All 
    Order Allow,Deny
    Allow From All
   </Directory>
</VirtualHost>

Когда я это сделал, я закодировал ответ в моем собственном обработчике Apache (написанный на Perl), поэтому я не понимаю, как он установлен в Apache, и не вижу его в ваших файлах конфигурации. Я вижу, что вы включили .pl .py и .cgi, поэтому у вас может быть собственный код для ответа на предполетный запрос.

Что служит ответом на предполетный запрос? Это та часть, где генерируется недопустимый ответ.

Проверьте запрос и ответы (Network vierw в инструментах разработчика вашего браузера) и перекрестную ссылку с RFC. Различные конфигурации сервера будут иметь разные параметры, поэтому убедитесь, что, если вы используете конфигурацию Apache, вы поняли, как правильно установить параметр.

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

Мои искренние извинения. У меня был файл backendurls, специфичный для каждого развертывания сервера, и я попадал не в ту конечную точку. Мой Linux-сервер поражал сервер Windows Dev.

Написание этого на самом деле помогло мне решить эту проблему.