【问题标题】:Mixed Content (laravel)混合内容(laravel)
【发布时间】:2018-04-11 15:17:19
【问题描述】:

我收到以下错误(在每个页面上)

app.js:703 混合内容:“https://sitename.com/”处的页面通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点“http://sitename.com/index.php/getMessages”。此内容也应通过 HTTPS 提供。

该网站是使用 Laravel 构建的。 有谁知道如何解决这个错误?

【问题讨论】:

  • 您需要将所有网站页面设置为使用https

标签: laravel-5


【解决方案1】:

如果您使用的是 Laravel Octane,我通过查看 octane.php 配置文件找到了解决方法。

设置您的环境,让 octane 通知上游框架使用 HTTPS。

OCTANE_HTTPS=true

修复了我遇到的混合内容和电子邮件验证签名失败的问题。

【讨论】:

    【解决方案2】:

    如果您将网站从 HTTP 移动到 HTTPS,并且它在 HTTP 上运行良好,并且如果您在 config/app.php 和 .env 文件中添加了带有 https 的新 URL,那么您可能需要在您的 app/Providers/AppServiceProvider.php 文件的启动函数中添加以下 sn-p 并且不要忘记添加“use Illuminate\Support\Facades\URL;”在文件顶部修复此错误。 Please check attached for better sample code

    use Illuminate\Support\Facades\URL;
    
    public function boot()
    {
           URL::forceScheme('https');
    }
    

    【讨论】:

      【解决方案3】:

      我正在使用 Laravel 8 和 Livewire 2。我在 Digital Ocean 上创建了应用程序,为了解决这些问题,我必须这样做:

      <!-- Tailwind CSS -->
      <link href="{{ secure_asset('css/app.css') }}" rel="stylesheet">
          
      <!-- Alpine -->
      <script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" defer></script>
      
      <!-- Scripts -->
      <script src="{{ secure_asset('js/app.js') }}" defer></script>
      @livewireStyles
      

      我不得不改用secure_asset。这在 Laravel 文档中。

      我还必须像这样更改secure_url的所有“路由”引用:

      <form method="POST" action="{{ route('logout') }}">
      <form method="POST" action="{{ secure_url('/logout') }}">
      

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        就我而言,这是因为我不知道 asset() 函数不会自动处理 https(正如 frankfurt-laravel's answer 所指出的那样)。

        为了解决这个问题,由于我没有在 dev 中使用 SSL,我将 .env 中的 ASSET_URL 设置为 https url:

        APP_URL=https://example.com
        ASSET_URL="${APP_URL}"
        

        这会覆盖 asset() 函数以使用 https url,而无需修改函数。有关更多上下文,请参阅the docs

        【讨论】:

        • 也适用于 Laravel 7.x。谢谢!
        • 这解决了我的问题。奇怪的是,在 6 个相同的 L7 部署中,只有 1 个站点需要这个。
        • 老兄,太好了。非常感谢。
        • 它修复了我的应用程序。非常感谢
        【解决方案5】:

        几天前我遇到了同样的问题。您使用 Cloudflare 吗?将灵活 SSL 更改为完整。

        【讨论】:

        • 节省了大量时间。 :)
        • 感谢您又为我节省了一个小时!
        【解决方案6】:

        我建议使用方法参数$secure Laravel(5.6 肯定有)提供:

        当您使用资产加载时,例如

         <!-- Scripts -->
        <script src="{{ asset('js/app.js') }}" defer></script>
        <!-- Styles -->
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">
        

        如果您有某种高级 IDE,您可以查找 asset() 的定义。如果没有,请检查此文件helpers.php

        但是,文档说

        /**
         * Generate an asset path for the application.
         *
         * @param  string  $path
         * @param  bool    $secure
         * @return string
         */
        

        因此您只需将true 作为第二个参数 传递,然后以安全的方式加载资源。对于上面的例子,它会是

        <!-- Scripts -->
        <script src="{{ asset('js/app.js',true) }}" defer></script>
        <!-- Styles -->
        <link href="{{ asset('css/app.css', true) }}" rel="stylesheet">
        

        请注意,如果您使用php artisan serve,这将导致冲突,因为 artisan 无法通过 HTTPS 协议提供服务。因此,您需要 HTTPS 设置,例如在 MacOS 上使用 Valet 或在 Windows 上使用 Homestead。点击链接了解设置详情。

        希望对您有所帮助,如果有效,请告诉我。

        【讨论】:

        • 谢谢,这个问题把我逼疯了!
        • 这是唯一对我有用的东西。谢谢法兰克福! :P
        【解决方案7】:

        确保从 XMLHttpRequest 端点 URL 中删除尾部斜杠。

        【讨论】:

        • 我不相信这是提出问题的人的解决方案,但是当我看到这个答案时它解决了我的问题 ;-)
        【解决方案8】:

        您打开了页面“https://sitename.com/”。但是这个页面的javascript发送的是http请求,而不是https。

        您应该更改您的 javascript 代码以发送 https 请求。

        发送https请求有两种方式:

        1. 把协议和路径放在一起。

          $.get('http://sitename.com/index.php/getMessages')

        2. 忽略协议,但在路径前加上'//'

          $.get('//sitename.com/index.php/getMessages')

        【讨论】:

        • 我将如何/在哪里在 Laravel 项目中实现它(我是 laravel 和 JavaScript 的新手)
        【解决方案9】:

        在您的 .env 文件中将您的 url 设置为 https APP_URL=https://sitename.com 并在您的 config/app.php 中将 url 设置为 'url' =&gt; env('APP_URL', 'APP_URL=https://sitename.com'), 这应该可以解决您的问题

        【讨论】:

        • 我在部署站点时更改的Env文件,后者我刚刚更改但似乎没有任何效果...(仍然相同的错误)
        猜你喜欢
        • 2020-07-20
        • 1970-01-01
        • 2021-11-21
        • 2016-06-22
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多