HTML 表单中的 HTTPS 链接正在转换为 HTTP,并在 Iframe 内加载 443 端口

问题描述 投票:0回答:1

大家下午好。 我正在与 Domo 的报告服务提供商合作,将报告嵌入到我们的应用程序中。 我创建了以下组件。

import React from 'react';

const generateFormHtml = (actionUrl, embedToken) => (
    `
    <!DOCTYPE html>
    <html>
        <body>
            <form id="embedForm" action="${actionUrl}" method="post">
                <input type="hidden" name="embedToken" value="${embedToken}" />
            </form>
            <script>
                        document.getElementById("embedForm").submit();
            </script>
        </body>
    </html>
    `
);

const generateDataUri = (html) => `data:text/html;charset=utf-8,${encodeURI(html)}`;

const ReportEmbedder = ({ actionUrl, embedToken }) => {
    const htmlContent = generateFormHtml(actionUrl, embedToken);
    const formDataUri = generateDataUri(htmlContent);

    return (
        <iframe
            className="panel embed-panel"
            src={formDataUri}
            title="Embedded Form"
            allowtransparency="false"
        />
    );
};

export default ReportEmbedder;

该组件正在 html 的主页中被调用

        /// actionUrl = 'https://public.domo.com/embed/pages/XXXXX'
        /// embedToken = 'full_length_embed_token'

            <div className="panel-container">
                    <ReportEmbedder
                            actionUrl={actionUrl}
                            embedToken={embedToken}
                        />
            </div>

我的问题是,当表单呈现时,它似乎将 https url 转换为带有关联端口的 http。

HTTP 错误 403 访问被拒绝 URI:http://public.domo.com:443/embed/pages/XXXXXX 状态:403 消息:访问被拒绝

有人知道这是怎么发生的或者去哪里寻找吗? 我有一种感觉,这只是一个配置问题,我忽略了,但我还没有找到它。

我进行了调试,以确保 URI 在整个过程中都声明 https。 我已经确认在generateDataUri步骤中,编码不会覆盖https设置。 我接受过其他一些工程师的同行评审,但他们和我一样困惑。

我希望 https 链接继续,以便 iframe 从端点加载报告。

javascript html reactjs iframe domo
1个回答
0
投票

您的 iframe 是一个单独的页面,您需要确保它也登录到您尝试访问的网站。

© www.soinside.com 2019 - 2024. All rights reserved.