ArcGIS Server REST API - POST OPTIONS 预检请求:405 方法不允许

Posted

技术标签:

【中文标题】ArcGIS Server REST API - POST OPTIONS 预检请求:405 方法不允许【英文标题】:ArcGIS Server REST API - POST OPTIONS preflight request: 405 Method not allowed 【发布时间】: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 问题,在 *** 上可能会更好地解决。 问题似乎出在 arcgis 服务器上,所以 mne 与 GIS 相关 其他 Access-Control-Allow-Origin: *,什么作为 Access-Control-Allow-Methods 和 Access-Control-Allow-Headers 传递? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于ArcGIS Server REST API - POST OPTIONS 预检请求:405 方法不允许的主要内容,如果未能解决你的问题,请参考以下文章

arcgis server10.2 rest服务query查询单图层 支持属性查询和空间查询

arcgis rest api 离线部署与引用

无法从 ArcGIS REST API 获取形状数据

转换Arcgis Server REST接口实现OL2直接调用

REST及REST风格的Web服务与ArcGIS Server REST风格的Web服务 一

ArcGIS Server,rest路径输入要素json 格式描述