SAP Hana XSA部署和路由说明(CORS,mtaext)

2020-08-18 14:02发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在WebIDE中开发了一个MTA项目,该项目由db,js和web(html5/nodejs)模块组成。 我有几个问题:

1。 我们的系统已经使用基于端口的路由安装。 因此,每个应用程序/模块都将使用其自己的端口号进行部署。 但是,这些端口号是动态的。 但是,我们需要提前知道端口号,因为我们需要其中一些应用程序的确切URL。 到目前为止,我们想到的一种预设端口号的方法是使用.mtaext文件。 这有效。 但是,在基于端口的路由中创建知名路由的最佳实践是什么?

2。 我正在遵循" SAP Hana XS高级模型的SAP Hana开发人员指南" 1.1版。

https://help.sap.com/ doc/6165d52d8f534ea1a9c5aff17a672f64/2.0.03/zh-CN/SAP_HANA_Developer_Guide_for_SAP_HANA_XS_Advanced_Model_en.pdf

在第849页,它讨论了CORS环境变量。 在页851上,有一个示例manifest.yml文件的示例。 但是,在我看来,manifest.yml文件不适用于mtar文件。 我们应该使用" .mtaext"文件来扩展mtar文件。 我尝试创建mtaext文件,并在部署过程中使用以下命令将其应用于应用程序:

>> XS -e

我的mtaext文件如下所示:

---- mtaext的开始-----

_schema版本:" 3.1"

ID:MyApp.config1

扩展:MyApp

模块:

-名称:web

参数:

内存:2048M

端口:51101

环境:

CORS:>

[

{

" allowedMethods":[" GET"," OPTIONS"," POST"," PUT"],

" allowedOrigin":[{

"主机":"。*",

" protocol":" https"}],

" uriPattern":"。*"

}

]

--- mtaext的结尾----

我注意到内存和端口已被接受。 但是任何使用'env'参数设置的环境变量都将被忽略。 我可以使用命令行查看环境变量:

>> XS env MyApp.web

因此,我想到的另一种选择是使用命令行选项(例如

)手动设置环境

>> XS set-env MyApp.web CORS --from-file <包含CORS环境值的文件>

设置环境。

所以,我的问题是:CORS环境变量是否可用于NodeJS应用程序。 如果是这样,设置它们的正确方法是什么。

即使在手动设置了CORS环境(使用XS set-env)之后,Chrome进行的任何飞行前呼叫均会失败,说明未实现" OPTIONS"方法。

我尝试使用GET作为方法在postman下使用默认URL,并获得正确的结果。 但是,当我使用OPTIONS作为方法尝试相同的URL时,出现错误405(不允许使用该方法)。 如何确保任何OPTIONS请求都得到有效的响应?

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在WebIDE中开发了一个MTA项目,该项目由db,js和web(html5/nodejs)模块组成。 我有几个问题:

1。 我们的系统已经使用基于端口的路由安装。 因此,每个应用程序/模块都将使用其自己的端口号进行部署。 但是,这些端口号是动态的。 但是,我们需要提前知道端口号,因为我们需要其中一些应用程序的确切URL。 到目前为止,我们想到的一种预设端口号的方法是使用.mtaext文件。 这有效。 但是,在基于端口的路由中创建知名路由的最佳实践是什么?

2。 我正在遵循" SAP Hana XS高级模型的SAP Hana开发人员指南" 1.1版。

https://help.sap.com/ doc/6165d52d8f534ea1a9c5aff17a672f64/2.0.03/zh-CN/SAP_HANA_Developer_Guide_for_SAP_HANA_XS_Advanced_Model_en.pdf

在第849页,它讨论了CORS环境变量。 在页851上,有一个示例manifest.yml文件的示例。 但是,在我看来,manifest.yml文件不适用于mtar文件。 我们应该使用" .mtaext"文件来扩展mtar文件。 我尝试创建mtaext文件,并在部署过程中使用以下命令将其应用于应用程序:

>> XS -e

我的mtaext文件如下所示:

---- mtaext的开始-----

_schema版本:" 3.1"

ID:MyApp.config1

扩展:MyApp

模块:

-名称:web

参数:

内存:2048M

端口:51101

环境:

CORS:>

[

{

" allowedMethods":[" GET"," OPTIONS"," POST"," PUT"],

" allowedOrigin":[{

"主机":"。*",

" protocol":" https"}],

" uriPattern":"。*"

}

]

--- mtaext的结尾----

我注意到内存和端口已被接受。 但是任何使用'env'参数设置的环境变量都将被忽略。 我可以使用命令行查看环境变量:

>> XS env MyApp.web

因此,我想到的另一种选择是使用命令行选项(例如

)手动设置环境

>> XS set-env MyApp.web CORS --from-file <包含CORS环境值的文件>

设置环境。

所以,我的问题是:CORS环境变量是否可用于NodeJS应用程序。 如果是这样,设置它们的正确方法是什么。

即使在手动设置了CORS环境(使用XS set-env)之后,Chrome进行的任何飞行前呼叫均会失败,说明未实现" OPTIONS"方法。

我尝试使用GET作为方法在postman下使用默认URL,并获得正确的结果。 但是,当我使用OPTIONS作为方法尝试相同的URL时,出现错误405(不允许使用该方法)。 如何确保任何OPTIONS请求都得到有效的响应?

谢谢。

付费偷看设置
发送
1条回答
Baoming ROSE
1楼-- · 2020-08-18 14:22

对此有什么解决办法?

一周热门 更多>