大家下午好。 我正在与 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 从端点加载报告。
您的 iframe 是一个单独的页面,您需要确保它也登录到您尝试访问的网站。