VestaCP | Laravel Ajax не работает на сервере, но работает на localhost - PullRequest
0 голосов
/ 17 июня 2020

У меня проблемы с веб-сайтом, над которым я работаю, вот что я использую в localhost и server.

Localhost: Xampp, PHP 7.3

Сервер: VestaCP, PHP 7.4.3

В настоящее время при каждом ajax методе post / get я не получаю никакой обратной связи с сервера, я просто получаю неопределенное json обратно.

Вот код JS:

function confirmMaintenanceOn() {
  Swal.fire({
    title: '',
    text: 'You are about to activate maintenance mode!',
    icon: 'warning',
    showCancelButton: true,
    confirmButtonColor: '#3085d6',
    cancelButtonColor: '#d33',
    confirmButtonText: 'Yes!',
    showLoaderOnConfirm: true,
    preConfirm() {
     return new Promise(((resolve) => {
     $.ajax({
       url: '{{ route("maintenance_on") }}',
       type: 'POST',
       data: { _token: '{{csrf_token()}}' },
       dataType: 'json',
        })
          .done((response) => {
            Swal.fire('', 'Maintanance mode has been activated!', 'success');
          })
          .fail((response) => {
            Swal.fire('', "I don't feel so good...", 'error');
            console.log(response);
          });
     }));
    },
    allowOutsideClick: false,
  });
}

Ответ, который я получаю в консоли:

abort: ƒ (a)
always: ƒ ()
catch: ƒ (a)
done: ƒ ()
fail: ƒ ()
getAllResponseHeaders: ƒ ()
getResponseHeader: ƒ (a)
overrideMimeType: ƒ (a)
pipe: ƒ ()
progress: ƒ ()
promise: ƒ (a)
readyState: 0
responseJSON: undefined
setRequestHeader: ƒ (a,b)
state: ƒ ()
status: 0
statusCode: ƒ (a)
statusText: "error"
then: ƒ (b,d,e)
__proto__: Object

А код PHP - это простой вызов Artisan для включения обслуживания Режим. Теперь сложная часть: я проверил все маршрутизируемые, я даже переключил его на GET, и он работал, если ввести URL-адрес в моем браузере, я получаю правильный ответ, код работает, но что-то не так с ajax. Как я уже сказал в заголовке, на localhost он работает безупречно, даже с включенной отладкой я все равно получаю тот же ответ, undefined. Так что, если у вас была эта проблема раньше, дайте мне знать, что я могу сделать, чтобы ее исправить.

1 Ответ

0 голосов
/ 17 июня 2020

Я решил проблему, фея легко. Моя проблема заключалась в перенаправлении всех http-ссылок на https. Из того, что я читал, Ajax имеет функцию безопасности, при которой, если ссылка перенаправлена, она не будет работать.

Как исправить: просто измените все URL-адреса ajax на https: // вместо http: //, поскольку я использую Laravel blade route (''), мне пришлось добавить 2 простых коды в app/Providers/AppServiceProvider.php Добавьте use Illuminate\Support\Facades\URL; вверху И добавьте URL::forceScheme('https'); в функцию boot (). Надеюсь, я вам помог, удачи!

...