SAP HANA ODATA 跨域访问

在 SAP HANA 中,我们通过开源的 ODATA Java 实现 — Apache Olingo,构建了一个 Java Application 来实现 ODATA。ODATA Service 的地址是访问
ApplicationPath/*.svc
当你访问这个地址时,会自动调用同名的 servlet 进行相关的操作。

当我们访问这个地址时,一切还是正常的。但当我们在构建的 HTML5 Application 中为了使用该 ODATA Service 中的数据,将该地址作为 ODATA Service 地址传入的时候,访问出现了
400 Bad Request

odata-400
出现400无效请求的原因是因为 ODATA Service 和 HTML5 Application 不在同一个域中,为了保护数据,ODATA 对来自其他域的请求做了限制。

解决的方法是在 HANA 中设置一个 Destination 作跳转:

Step1.New Destination

在 SAP HANA Cloud Platform Cockpit 左侧菜单中选择 Destinations,点击 New Destination 并填写相关下信息。其中,URL 应为需要跳转的域,这里指该 ODATA Java Application 地址;

new-destination

Step2.Destination Path

新建完成后会生成一个新的 Destination,我们假设 Name 为 odataui5,则这个时候便生成了一个新的相对地址供其它 Application 调用,格式为:

如在之前提到的 HTML5 Application 中调用就是

//odataui5 是 destination name;DemoServiceWrite 是 Java Application name;DemoService.svc 是 ODATA Service name。

destination-ui5

Step3. Make Destination Work

修改 HTML5 Application 中的 neo-app.json,注意 destination path:

修改生效后,回到 SAP HANA Cloud Platform Cockpit 查看该 HTML5 Application 详情,会发现 Required Destinations 一项出现了刚添加的 destination ,并处于有效状态。

这个时候再访问这个 HTML5 Application,就能访问到 ODATA Service 了。

如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: SAP HANA ODATA 跨域访问

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
支付宝捐赠
anyShare分享到:

发表回复