【问题标题】:ArcGIS Server REST API - POST OPTIONS preflight request: 405 Method not allowedArcGIS Server REST API - POST OPTIONS 预检请求:405 方法不允许
【发布时间】:2017-07-04 04:22:06
【问题描述】:

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

在 ArcGIS Server 中创建新记录的 HTTP POST 请求如下: http://server/arcgis/rest/services/layerName/FeatureServer/0/addFeatures

正如文档所述 (http://resources.arcgis.com/en/help/rest/apiref/fsadd.html),可以执行的操作 永久更改系统状态(添加、更新、删除)是仅 POST 操作。否则,将向客户端发送错误代码为 405(不允许方法)的相应错误消息。

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

因此考虑到 ArcGIS Server 只接受 POST 请求来添加要素,并且考虑到 Firefox 首先发送一个 OPTIONS 方法,我在使用 Firefox 编辑要素图层时遇到了问题。 其实就是下面的请求:

server/arcgis/rest/services/layerName/FeatureServer/0/addFeatures

返回错误代码 405(不允许的方法)。

是否有解决此问题的解决方法或方法?特别是考虑到也许有一天,其他浏览器可能会出于安全原因执行此 OPTIONS 请求。

【问题讨论】:

  • 如果您使用的是 JS API,这可能会得到处理,但既然您没有,这更像是一个纯 IT 问题,在 StackOverflow 上可能会更好地解决。
  • 问题似乎出在 arcgis 服务器上,所以 mne 与 GIS 相关
  • 其他 Access-Control-Allow-Origin: *,什么作为 Access-Control-Allow-Methods 和 Access-Control-Allow-Headers 传递?

标签: firefox http-post esri arcgis-server preflight


【解决方案1】:

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

  1. 如果您可以管理 ArcGIS 服务器。
  2. 如果您可以将代理页面放在与您的 Web 服务器相同的来源。 (这种方式将通过使用您的服务器向另一台服务器请求来解决问题,并且不再存在 CORS 问题。)
    • 只需按照this 中的步骤操作即可。
  3. 如果您必须将代理页面放在另一个来源,并且您可以在托管代理页面的服务器上启用 CORS。
  4. 如果您必须将代理页面放在另一个来源,您必须先编辑代理页面以接受并回复预检请求。 (这种方式将允许您的服务器处理预检请求并首先接受它们。)
    • 按照this 中的步骤操作。
    • 完成代理页面设置后,您需要编辑代理页面代码以接受和回复预检请求。请看this

【讨论】:

    【解决方案2】:

    我不知道为什么,但这在我们的应用程序中有效。

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

    除非我们定义了 REACT_APP_API_hostREACT_APP_API_protocol,否则我们会从 ESRI 底图中获得这些 405。

    【讨论】:

      猜你喜欢
      • 2019-05-15
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2015-02-10
      • 2013-10-10
      • 2014-05-23
      相关资源
      最近更新 更多