Firefox ArcGIS服务器REST API-POST选项飞行前请求:不允许使用405方法

Firefox ArcGIS服务器REST API-POST选项飞行前请求:不允许使用405方法,firefox,http-post,esri,arcgis-server,preflight,Firefox,Http Post,Esri,Arcgis Server,Preflight,我正在基于ArcGis服务器构建一个GIS web应用程序,但Firefox浏览器有问题。 我正在JS中开发一个GIS web应用程序,允许用户编辑要素图层(注意:在没有ESRI ArcGis API for JS的情况下调用ArcGis) 在ArcGIS服务器中创建新记录的HTTP POST请求如下: 正如文档所述(),可以 永久更改系统状态(添加、更新、删除)属于仅发布操作。否则,将向客户端发送错误代码为405(不允许使用方法)的适当错误消息 在Chrome和IE中,为了运行此POST请求

我正在基于ArcGis服务器构建一个GIS web应用程序,但Firefox浏览器有问题。 我正在JS中开发一个GIS web应用程序,允许用户编辑要素图层(注意:在没有ESRI ArcGis API for JS的情况下调用ArcGis)

在ArcGIS服务器中创建新记录的HTTP POST请求如下:

正如文档所述(),可以 永久更改系统状态(添加、更新、删除)属于仅发布操作。否则,将向客户端发送错误代码为405(不允许使用方法)的适当错误消息

在Chrome和IE中,为了运行此POST请求并避免CORS问题,我使用了一个代理。 相反,为了确定实际请求是否可以安全发送,首先“预飞”POST请求通过OPTIONS方法向另一个域上的资源发送HTTP请求

因此,考虑到ArcGIS服务器只接受添加功能的POST请求,并且考虑到Firefox首先发送选项方法,我在使用Firefox编辑功能层时遇到了一个问题。 事实上,以下要求:

服务器/arcgis/rest/services/layerName/FeatureServer/0/addFeatures

返回错误代码405(不允许使用方法)


是否有解决此问题的办法或方法?特别是考虑到可能有一天,出于安全原因,其他浏览器可能会实现此选项请求。

有4种方法可以解决您的问题,每种方法都取决于您的服务器体系结构。(第一种方法只是配置服务器,但另一种方法是使用现在支持.NET、PHP和Java的)

  • 如果您可以管理ArcGIS服务器。
    • 试着去做
  • 如果可以将代理页与web服务器放在同一个源中。(这种方式将通过使用您的服务器向另一台服务器请求来解决问题,并且不再存在CORS问题。)
    • 只需按照中的步骤操作即可
  • 如果必须将代理页放在另一个源中,并且可以在承载代理页的服务器上启用CORS。
    • 然后按照中的步骤进行操作
  • 如果必须将代理页面放置在另一个原点,则必须编辑代理页面以首先接受并回复飞行前请求。(这种方式将允许您的服务器处理飞行前请求并首先接受它们。)
    • 按照中的步骤操作
    • 完成代理页面设置后,需要编辑代理页面代码以接受和回复飞行前请求。请看一看

  • 我不知道为什么,但这在我们的应用程序中起了作用

    我们的应用程序是用react编写的,并且依赖于一个单独的后端API


    除非我们定义了
    REACT\u-APP\u-API\u-host
    REACT\u-APP\u-API\u-protocol
    ,否则我们会从ESRI基础图中获得这些405。

    如果您使用的是JS API,这可能会得到处理,但由于您没有,这更像是一个纯粹的IT问题,在StackOverflow中可能会得到更好的解决。这个问题似乎与arcgis server有关,因此对于mne来说,它与GIS相关,访问控制允许源:*,作为访问控制允许方法和访问控制允许头传递的是什么?