我有我的网站上Laravel和JScroll JavaScript插件在前端使用onscroll分页建设。
我已经正确设置了我的服务器,它会自动重定向到HTTPS。当我通过https上的IP地址访问我的网站时,分页工作完美,没有任何问题,但当我将我的域指向IP地址时,分页不工作,并请求HTTP协议上的分页URL,由于混合内容,请求被浏览器阻止。
我的网站正在使用Cloudflare作为CDN和DNS解析器。我也启用了Cloudflare上的HTTPS和自动https重定向通过Cloudflare。但我仍然得到同样的错误。
我认为是JScroll和jQuery导致了这个问题。
JScroll插件链接:https://github.com/pklauzinski/jscroll
无限滚动分页工作通过以下代码:
<script type="text/javascript">
$('ul.pagination').hide();
$(function() {
$('.scrolling-pagination').jscroll({
autoTrigger: true,
padding: 20,
nextSelector: '.pagination li.active + li a',
contentSelector: 'div.scrolling-pagination',
callback: function() {
$('ul.pagination').remove();
}
});
});
</script>
下面是控制台错误:
Mixed Content: The page at 'https://example.com/posts/all' was loaded over HTTPS,
but requested an insecure XMLHttpRequest endpoint 'http://example.com/posts/all?page=3'.
@ jquery.min.js:4
This request has been blocked; the content must be served over HTTPS.
send @ jquery.min.js:4
ajax @ jquery.min.js:4
n.fn.load @ jquery.min.js:4
(anonymous) @ jquery.jscroll.min.js:1
d.complete @ jquery.min.js:3
i @ jquery.min.js:2
add @ jquery.min.js:2
_a @ jquery.min.js:3
g @ jquery.min.js:3
dequeue @ jquery.min.js:3
(anonymous) @ jquery.min.js:3
each @ jquery.min.js:2
如何解决此问题?
更新
我发现了这个问题,但无法解决它。实际上,当内容通过 AJAX 请求加载时,返回的呈现HTML数据不包含HTTPS分页URL。我使用此代码在AJAX调用时返回html响应
$html = view('ajaxData', ['data' => $data, 'filtersArray' => $filtersArray])->render();
echo $html;
在刀片文件中,我使用此代码生成分页内容:
{{ $data->appends($filtersArray)->links() }}
1条答案
按热度按时间ecr0jaav1#
我找到了解决方案,问题已经解决了。
在Laravel AppServiceProvider
AppServiceProvider::boot
方法中,我添加了以下代码,以强制所有内容使用HTTPS,包括分页链接。