我已经为这个问题苦苦挣扎了几天,但找不到任何解决方案。
我已经实现了 LTI Advantage (LTI 1.3),它就像魅力一样。但是,有一个问题我无法摆脱。在 LTI 1.3 中,我们可以选择在 iframe 中显示工具的内容(还有在窗口中显示它的选项,但我只想坚持使用 IFrame)
当我尝试创建深层链接时,它会按预期在 iframe 中打开。但是,当我尝试打开资源链接时,应用程序会在新窗口而不是 iframe 中打开。
我搜索了一个可能的解决方案:我认为这一定是因为响应标头中附加了 X-Frame-Options,我尝试通过在 Global.aspx.cs 中添加代码来手动删除它我已经编写了从网络中删除此标头的代码配置设置,但没有任何效果。
现在我想知道我启动应用程序的代码可能是罪魁祸首。我正在使用以下代码使用表单发布启动应用程序:
string content = string.Empty;
content += "<html><head></head>";
content += string.Format("<body onload=\"document.{0}.submit();\">", "newForm");
content += "<form name=\"newForm\" target='_parent' method=\"POST\" action=\"" + fadavisLtiUrl + "\">";
foreach (var item in ltiRequestData)
{
content += string.Format("<input type=hidden name=\"{0}\"value=\"{1}\">", item.Key, item.Value);
}
content += "</form>";
content += "</body></html>";
return Content(content);
此代码是否负责在窗口而不是 iframe 中启动应用程序?
相同的 LMS 设置适用于我的其他 POC 应用程序,没有任何问题。然而,唯一的区别是我的可启动应用程序只是同一个 POC 应用程序中同一个域中的一个测试页面。而在实时场景中,它是不同的应用程序,URL 略有不同。
以下是我正在使用的一些示例 URL。
OIDC 登录验证 URL:https ://mysiteltiadvantage.mysite.com/ LTI 应用程序启动 URL:https ://devtesting.mysite.com/LTI/home/LTIAdvantageApp?productid=13902 应用程序 URL:http://apptest.mysite。 com/product?applicationid=13&accountid=1076615
任何人都可以建议任何解决方法来使用 LMS 在 IFrame 中打开应用程序或指出我在这里犯的错误吗?
拉克斯曼曼卡拉。
提前致谢。