当前位置:主页 > 游戏服务器 > 资讯 >

域名注册_华为云域名_优惠券

  • 资讯
  • 2021-11-26 07:01
  • 动埠云

大家好,

用例:我们需要使用SAP网关和SAPUI5从IE8/IE9浏览器上传附件。许多企业仍然喜欢使用传统(旧)浏览器

因此启用这些功能对于不进行重大浏览器升级的公司来说至关重要。让我们从讨论场景开始,然后解释涉及的解决方案。

问题陈述:当使用SAP Gateway作为后端存储文件时,SAPUI5文件上载程序将仅适用于现代HTML5浏览器。

问题:SAP Gateway OData服务需要在处理附件时设置2个自定义头。(X-CSRF-Token和Slug)。只有兼容HTML5的浏览器才支持设置这些自定义HTTP头!换言之,为文件上传请求设置HTTP头在IE8和IE9中不起作用。

解决方案/解决方法:

1.如果您使用任何Java服务器作为前端,那么下面的补丁可能对您有用,正如W.Snoep(Thank you Wim)

"在URL中发送参数,并使用servlet根据URL添加头参数参数。servlet已经具有代理功能,交通大数据,但是现在也使用它,为slug和x-csrf/x-requested-with头添加适当的头。这样做可以在后端添加文件。但是,由于IE9通过iframe将文件作为多部分/表单数据发送,因此它在后端的文件中有额外的页眉和页脚数据。这些需要在后端ECC系统中切断。这个功能现在在IE9上运行得很顺利,"

2.如果我们不能用(1)来解决问题,人工智能龙头企业,那么我们可以按照下面的方法。(当我们的前端和后端都是SAP系统时)。

创建自定义处理程序以实现这个。这个博客主要关注这种方法。以下是相关步骤。

此场景的开发活动分为两个步骤:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~创建自定义处理程序—设置网关环境

~,将x-csrf-token和slug(如果需要)值作为隐藏输入值添加到上传表单中,这些值被添加到http请求头中。

–您可以通过查看UI5源代码中FileUploader控件的上载方法实现来查找如何检索上载表单。

–对于IE8和IE9,为fileuploader控件的uploadurl属性设置一个不同的值(下面定义了外部别名)。

服务器端:

-------------

IE8和IE9的问题是ICF odata节点的默认处理程序类(/IWFND/CL\ SODATA\ U HTTP\ U handler)仅从HTTP头读取x-csrf-token,并且它是无法在IE8和IE9中设置http头。其思想是创建一个自定义处理程序,从post数据中读取x-csrf-token,并将其添加到http请求头中,然后恢复正常的请求流。

–创建一个新的自定义处理程序类,该类实现接口IF\http\U扩展。此处理程序将读取x-csrf-token(或无论您为隐藏的输入字段使用什么名称),并在http请求头中设置它

–因为我们无法修改odata节点的处理程序列表,因为它是sap标准,我们将把自定义处理程序添加到我们控制的应用程序节点的处理程序列表中。添加默认的odata处理程序(/IWFND/CL\u SODATA\u HTTP\u handler)作为列表中的下一个处理程序。

–为新的自定义处理程序(例如customhandler)创建外部别名。此值用作上uploadurl属性的值fileuploader控件(在设置uploadurl属性之前,预先挂起并用"/"附加值,例如/customhandler/)。

摘要:

在IE8和IE9中,fileuploader uploadurl将直接指向应用程序节点,我们的自定义处理程序将在默认odata处理程序之前进行处理。我们的自定义处理程序读取x-csrf-token从post数据并将其设置为http请求处理程序,从而允许默认odata处理程序读取它。

让我们从编码和配置开始。假设我们已经创建了一个OData服务来处理附件。如果你想了解更多关于这个的信息,请参考下面的博客这个

https://scn.sap.com/community/gateway/blog/2014/07/25/uploading-files-to-sap-gw-downloading-files-from-sap-gw–新技术

https://scn.sap.com/community/developer-center/front-end/blog/2014/07/28/upload-image-to-sap-gateway-and-display-image-in-ui5–完成服务后,使用带有sap网关的新文件上载程序

您可以注意到我们的服务将在ICF应用程序中有相应的条目。转到TCode SICF,如下所示进行检查。

点击上面突出显示的条目,您可以看到涉及的处理程序。

当我们上传文件时,上面的处理程序将在运行时检查X-CSRF-Token的一致性。

现在我们需要通过创建自定义处理程序来手动设置X-CSRF-Token。

这必须实现接口"IF\u HTTP\u EXTENSION"并在方法"IF\u HTTP\u EXTENSION~HANDLE\u REQUEST"中写入逻辑,读取x-csrf-token并在HTTP请求头

代码:

method IF\u EXTENSION~HANDLE\u REQUEST。数据:令牌类型字符串,slug类型字符串。*从POST data读取跨站点伪造令牌和Slug参数…token=server->request->GET\ FORM\字段(name='X-CSRF-token')。slug=server->request->GET\ FORM\ FIELD(name='slug')。服务器->请求->设置标题字段(名称='X-CSRF-Token'值=Token)。服务器->请求->设置标题字段(名称='Slug'值=Slug)。me->if\u http\u extension~lifetime\u rc=if\u http\u extension=>co\u lifetime\u keep。*添加以下代码,以便为应用程序节点me->if\u http\u extension~flow\u rc=if\u http\u extension=>CO\u flow\u OK\u OTHERS\u OPT调用后续处理程序。endmethod.

创建完自定义处理程序后,云服务器购买,我们需要将其分配给SICF应用程序节点中的OData服务,如图所示。

为新的自定义处理程序创建外部别名。此值用作SAPUI5应用程序中文件上载程序控件的uploadurl属性的值。

单击"外部别名"并创建一个指向我们在开始时创建的OData服务的新别名。

请确保在别名前面加上正斜杠"/",否则可能会遇到错误。分配成功后,别名结构如下:

维护外部别名时,如果出现"服务未找到"错误,请执行下面的说明进行整理。

2170724–外部别名调用终止,错误文本为"服务未找到"

测试别名:

:8030/customhandler/

测试应用程序:

出于测试目的,我正在使用googlechrome来模拟IE行为,并通过在URL头中传递数据来检查我们的OData服务是否正常工作。(而不是传入HTTP头)。

首先获取X-CSRF-Token:

:8030/customhandler/FileDetailSet?X-CSRF-Token=Fetch

猜你喜欢

微信公众号