我有一个OpenuI5 webapp,后面用Delphi Datasnap技术开发。 我使用上传收藏组件来管理字段列表https://openui5.hana.ondemand.com/explored.html#/entity/sap.m.UploadCollection/properties 该组件,当我想上传文件时,发送一个Http OPTIONS调用来检索从服务器调用的http方法列表。 问题是Datasnap服务器不处理http选项并返回501错误代码http://docwiki.embarcadero.com/RADStudio/Seattle/en/DataSnap_REST
我正在努力实现其中一个解决方案:
解决方案是什么?
答案 0 :(得分:3)
这里可能会发生一些混乱。 UI5并未明确显示您所看到的OPTIONS
来电,但您的浏览器却是。指示浏览器从您的服务器GET
$metadata
内省OData服务,并查看它支持的实体和功能。您的OData服务器似乎与您的Web应用程序不是同一台服务器,因此浏览器决定运行飞行前,检查是否可以执行此GET请求。
浏览器正在执行此前飞行作为OPTIONS
请求,然后服务器应返回一堆标头,指示允许服务调用。一旦浏览器从服务器收到OK-sign,就会显示UI5要求浏览器进行的实际GET
调用。
您遇到的问题与CORS有关,对于其服务在与应用程序不同的服务器上运行的Web应用程序而言非常常见。最常见的解决方案是在运行Web应用程序的服务器上代理服务,以使服务从同一服务器运行。在这种情况下,浏览器不会运行此飞行前CORS检查。
或者,您必须支持正在进行的CORS调用,这意味着您必须支持OPTIONS
方法并且必须从服务器返回所谓的CORS标头(Access-Control-Allow-Origin
等)那是在运行OData服务。