首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Vite:生产环境中的资产阻塞/混合内容问题

Laravel Vite:生产环境中的资产阻塞/混合内容问题
EN

Stack Overflow用户
提问于 2022-09-22 17:19:20
回答 2查看 528关注 0票数 1

我的应用程序托管在一个EC2实例后面的一个弹性负载均衡器,它管理我的SSL证书。在这个EC2实例中,我的nginx配置将所有http-请求重定向到https。我最近改用了Vite,这给我带来了很多麻烦。当我在调用npm run build后将我的应用程序推到服务器上时,我的资产就被阻塞了。在浏览器控制台中,我得到:

代码语言:javascript
复制
Mixed Content: The page at 'example.com' was loaded over HTTPS, but requested an insecure ...

我的设置:

vite.config.js

代码语言:javascript
复制
export default defineConfig({
    server: {
        host: 'localhost',
    },
    plugins: [
        laravel([
            'resources/assets/sass/app.sass',
            // etc...
        ]),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
});

在服务器块中设置"https: true“无助于我。

.env

代码语言:javascript
复制
APP_ENV=production
APP_URL=https://example.com
ASSET_URL=https://example.com

在我的刀片模板中,我使用了Vite-指令:

代码语言:javascript
复制
@vite('resources/assets/sass/app.sass')

我尝试了以下解决方案:

  • $proxies = '*'设置为TrustProxies.php,这没有任何效果。
  • URL::forceScheme('https');中设置AppServiceProvider.php,这将加载资产,但会导致许多其他问题。

不知何故,@vite-指令并没有将我的资产解析为安全资产。有了Laravel,我可以打电话给secure_asset

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-29 16:40:46

最后,我使用了托管代理-中间件。然而,那时我忘记了将其注册为全局中间件

票数 0
EN

Stack Overflow用户

发布于 2022-10-26 11:45:31

代码语言:javascript
复制
import fs from 'fs';

const host = 'example.com';
server: {
    host,
    hmr: {host},
    https: {
        key: fs.readFileSync(`ssl-path`),
        cert: fs.readFileSync(`ssl-cert-path`),
    },
},

您应该将其添加到vite.config.js文件中,同时将ASSET_URL添加到.env文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73818532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档