jQuery请求HTTP请求而不是HTTPS,并且请求由于混合内容而被阻止

4nkexdtk  于 2023-02-21  发布在  jQuery
关注(0)|答案(1)|浏览(243)

我有我的网站上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() }}
ecr0jaav

ecr0jaav1#

我找到了解决方案,问题已经解决了。
在Laravel AppServiceProvider AppServiceProvider::boot方法中,我添加了以下代码,以强制所有内容使用HTTPS,包括分页链接。

if($this->app->environment('production')) {    
   $this->app['request']->server->set('HTTPS','on'); 
}

相关问题