带有多个参数的URL的DOMDocument :: createElementNS

问题描述

lightSAML包正在使用此DOMDocument :: createElementNS,但是当namespaceURI中包含多个参数时,它最终会中断。

URL

https://suitecrm_dev.com/index.PHP?action=Login&module=Users

仅适用于URL

https://mautic_dev.com/s/saml/login_check

createElementNS的官方文档中提供的示例是其中没有参数的URL。

所以这里的问题是如何正确发送URL,以使DOMDocument :: createElementNS不会出现此错误

DOMDocument :: createElementNS():未终止的实体引用模块=用户

在lightSAML中出现问题的行:https://github.com/lightSAML/lightSAML/blob/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5/src/LightSaml/Model/AbstractSamlModel.php#L108

是的,我已经在LightSAML和SuiteCRM中提出了一个问题,但无济于事,我也在这里发布了一个问题,但决定重新创建一个问题,指出您导致所有这些问题的那一行。

解决方法

XML namespacesURI而不是URL

https://suitecrm_dev.com/index.php?action=Login&module=Users

URL。它找到资源,而:

https://mautic_dev.com/s/saml/login_check

URI,因为它标识资源。资源的物理位置可以在任何地方,甚至可以是URL中一个完全不同的域。

SAML核心仅处理身份。 SAML元数据处理身份的位置。尽管可以将参数编码到URI中,但不建议这样做:

由于URI之间可能存在混淆的风险 如果取消引用,则在名称空间名称中使用%转义字符 强烈劝阻。

因此,最好考虑DOMDocument::createElementNS代表哪个实体(身份),而不是信息将在哪里结束(位置)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...