2017-01-26 5 views
2

Я думаю, что этот вопрос будет легким для кого-то, и для меня это будет проблемой для лица.Смешанный контент jQuery ajax Запрос HTTPS был заблокирован на Laravel

У меня есть сайт Laravel 5.3, и на разных страницах есть запросы ajax. Поскольку я использую функцию csrf_field(), они работают нормально.

Но есть одна страница, где Аякса производит эту ошибку:

Mixed Content: The page at 'https://example.com/fb/reports' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://example.com/fb/json?levelType=&id=&aggLevel=ad&start=&end='. This request has been blocked; the content must be served over HTTPS. 

Мой Javascript выглядит следующим образом:

var relUrl = '/fb/json/'; 
    var payload = { 
     levelType: levelType, 
     id: id, 
     aggLevel: aggLevel, 
     start: start, 
     end: end 
    }; 
    console.log(relUrl); 
    return $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     data: payload, 
     url: relUrl, 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }    
    }); 

Я прочитал тонн статей об этой ошибке. Я пробовал множество предлагаемых решений, включая изменение относительного URL-адреса на полный URL-адрес https или запуск его с помощью двух косой черты.

Я даже пытался изменить способ работы с маршрутами Laravel, и теперь я использую только параметры querystring.

Я изучил все приведенные ниже статьи (и многое другое).

Кроме того, так как это один Аякса запрос в защиту паролем части сайта (и Аякса запросы, работы находятся в общественном/открытой части сайта), я подумал, может быть, что было связано с проблема. Но затем я использовал SSH для входа на производственный сервер и vim, чтобы временно удалить строку, требующую какой-либо проверки подлинности, и произойдет ошибка https , а также.

Какие шаги я могу предпринять для дальнейшего отладки? Какие журналы можно «хвост» на моем сервере Cloudways?

Есть ли что-нибудь, что Cloudflare может мешать (что я сомневаюсь, поскольку другие запросы ajax работают, все на https)?

Спасибо!

ответ

5

Резюме: мне нужно заменить var relUrl = '/fb/json/'; с var relUrl = '/fb/json'; (удалить слэш), потому что это то, что ожидал мой Laravel web.php маршруты файл.


В консоли Chrome, я заметил, что запрос https XHR был быть «отменено» и заменен http запроса.

Итак, я использовал ssh для входа на сервер удаленной работы и vim, чтобы временно отключить требование аутентификации.

Затем в консоли Chrome я определил и запустил новую команду ajax, используя абсолютный URL https с параметрами querystring в конце. Это сработало (ошибка смешанного содержимого). Затем я попробовал относительный URL-адрес, и он тоже работал.

Даже относительный URL-адрес без каких-либо параметров полезной нагрузки или querystring или трейлинг-косой черты.

Затем я снова добавил косые черты, и это не сработало.

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

+0

Вы когда-нибудь решали это? Я имею дело с этим прямо сейчас. – user1167442

+0

Да. См. Мою первую строку. Убрав конечную косую черту, зафиксируйте ее. Вот почему это принятый ответ. Удачи. – Ryan

+0

Спасибо. Мы решили это решить. Он удалял трейлинг-косую черту, но Apache также делал что-то, чтобы добавить косую черту, поэтому в нашем случае это было немного сумасшедшим. – user1167442

 Смежные вопросы

  • Нет связанных вопросов^_^