Sapui5 上传文件避免HTTP选项

Sapui5 上传文件避免HTTP选项,sapui5,datasnap,http-options-method,Sapui5,Datasnap,Http Options Method,我有一个OpenuI5 webapp,它有一个备份,是用Delphi Datasnap技术开发的。 我使用Upload Collection组件来管理字段列表 当我想要上传文件时,该组件发送一个Http选项调用,以检索可从服务器调用的Http方法列表。 问题在于Datasnap服务器不处理http选项,并返回501错误代码 我正在尝试实现以下解决方案之一: 通过组件发送http POST,而不在发送之前发送http选项 通过服务器Datasnap管理http POST调用 使用POST发送Bas

我有一个OpenuI5 webapp,它有一个备份,是用Delphi Datasnap技术开发的。 我使用Upload Collection组件来管理字段列表 当我想要上传文件时,该组件发送一个Http选项调用,以检索可从服务器调用的Http方法列表。 问题在于Datasnap服务器不处理http选项,并返回501错误代码

我正在尝试实现以下解决方案之一:

  • 通过组件发送http POST,而不在发送之前发送http选项
  • 通过服务器Datasnap管理http POST调用
  • 使用POST发送Base64编码的my docs,但禁止组件调用自动发送选项

  • 解决方案是什么?

    这里实际发生的事情可能有点混乱。UI5并没有明确地支持您看到的
    选项
    调用,但您的浏览器是。浏览器被指示从您的服务器
    获取
    $metadata
    ,以检查OData服务并查看它支持哪些实体和功能。看起来您的OData服务器与您的web应用程序不是同一个服务器,因此浏览器决定运行预运行,以检查是否可以执行此GET请求

    浏览器以
    OPTIONS
    请求的形式执行此飞行前操作,然后服务器应返回一组指示允许服务调用的标题。一旦浏览器从服务器接收到OK标志,UI5要求浏览器进行的实际
    GET
    呼叫正在进行

    您遇到的问题与CORS有关,对于服务运行在与应用程序不同的服务器上的web应用程序来说,这是非常常见的。最常见的解决方案是在运行web应用程序的服务器上代理服务,使服务看起来好像是从同一台服务器上运行的。在这种情况下,浏览器不会运行此飞行前CORS检查


    或者,您必须支持正在进行的CORS调用,这意味着您必须支持
    选项
    方法,并且必须返回所谓的CORS头(
    访问控制允许来源
    等)来自运行OData服务的服务器。

    这里实际发生的事情可能有点混乱。UI5并没有明确地支持您看到的
    选项
    调用,但您的浏览器是。浏览器被指示从您的服务器
    获取
    $metadata
    ,以检查OData服务并查看它支持哪些实体和功能。看起来您的OData服务器与您的web应用程序不是同一个服务器,因此浏览器决定运行预运行,以检查是否可以执行此GET请求

    浏览器以
    OPTIONS
    请求的形式执行此飞行前操作,然后服务器应返回一组指示允许服务调用的标题。一旦浏览器从服务器接收到OK标志,UI5要求浏览器进行的实际
    GET
    呼叫正在进行

    您遇到的问题与CORS有关,对于服务运行在与应用程序不同的服务器上的web应用程序来说,这是非常常见的。最常见的解决方案是在运行web应用程序的服务器上代理服务,使服务看起来好像是从同一台服务器上运行的。在这种情况下,浏览器不会运行此飞行前CORS检查


    或者,您必须支持正在进行的CORS调用,这意味着您必须支持
    选项
    方法,并且必须从运行OData服务的服务器返回所谓的CORS头(
    访问控制允许来源
    等)。

    解释得很好!另外查看维基百科:解释得很好!此外,请查看维基百科: