首页 > 解决方案 > 上下文代理预检选项请求

问题描述

我正在尝试从浏览器向 Context Broker 实例发出 GET 请求。

我在-corsOrigin __ALL启动应用程序时使用该标志在 CB 上启用了 CORS,我可以通过在 POSTMAN 中发出请求并在响应中看到此标头来看到这已经奏效:access-control-allow-origin →*.

我需要在我的 GET 请求中指定 Fiware-Service 标头以获取正确的实体,我认为这会使请求变得不简单,从而触发 OPTIONS HTTP 请求。

检查传出请求时,Chrome 报告已发送以下标头:

Access-Control-Request-Headers: fiware-service
Access-Control-Request-Method: GET

我从 Context Broker 得到的响应是:

Request URL: http://xxx.xxx.xxx.xxx:1026/v2/entities/
Request Method: OPTIONS
Status Code: 405 Method Not Allowed

McMutton先前对类似问题的回答说:

“对您的 js 代码进行必要的更改,以确保您的请求属于简单请求的范围。”

旨在从请求中删除非标准标头。但是,对我来说,我看不到任何非标准标头正在发送。

阅读有关 Access-Control-Allow-Headers 的 Fiware 文档,有一个指向指定允许标头的源代码的链接。在那里,我可以看到定义的 Fiware-Service 标头,但它与从浏览器发送的标头大小写不匹配(浏览器已将我的标头转换为全部小写)。


有谁知道上下文代理中的“标头检查”是否区分大小写?

如果不是,还有什么问题?


编辑:这里似乎已经报告了这个问题: https ://github.com/telefonicaid/fiware-orion/issues/3453

标签: fetchfiwarefiware-orionpreflight

解决方案


根据对相关 github 问题的讨论,问题似乎是由于 Context Broker 相当旧(版本 1.7.0),并且该功能尚未在该版本中开发。

解决方案是将 Context Broker 更新到最新版本(目前为 2.2.0)。


推荐阅读