Fiware 固件错误:访问控制允许原点

Fiware 固件错误:访问控制允许原点,fiware,fiware-orion,Fiware,Fiware Orion,我正在给contextBroker打电话,它给了我这个错误 Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response

我正在给contextBroker打电话,它给了我这个错误

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 405.
从邮递员或干舷我没有得到任何这一点

  getContextBroker(){
    console.log("Consumimos el servicio getContextBroker");
    let headers = new Headers ({'Accept': 'application/json', 'Fiware-Service': 'x', 'Fiware-ServicePath': '/x', 'Access-Control-Allow-Origin': '*'});
    let options = new RequestOptions ({headers : headers});
    return this._http.get(this.urlcontextBrokers, {headers : headers}).map(res => res.json());
  }

}
我怎样才能解决这个问题

我尝试添加:“访问控制允许来源”:“*”

但它仍然不起作用

编辑:

ps ax | grep contextBroker:

 862 pts/4    S+     0:00 grep contextBroker
 3792 ?        Ssl   27:35 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/run/contextBroker/contextBroker.pid -dbhost localhost -db orion -multiservice -logAppend
版本:

{
    "orion": {
        "version": "1.7.0",
        "uptime": "12 d, 18 h, 24 m, 20 s",
        "git_hash": "e544780eb64a4a2557c1f51dde070b8d82b86c49",
        "compile_time": "Wed Feb 8 13:30:24 CET 2017",
        "compiled_by": "fermin",
        "compiled_in": "centollo"
    }
}
EDIT02

您好,正如我所说的,我不想使用cors,我已通过以下方式将其从标题中删除:

   getContextBroker () {
     console.log ("We consume the getContextBroker service");
     let headers = new Headers ({'Accept': 'application / json', 'Fiware-Service': 'IoFAlmeria', 'Fiware-ServicePath': '/ ARMpalmerillas'});
     let options = new RequestOptions ({headers: headers});
     return this._http.get (this.urlcontextBrokers, {headers: headers}). map (res => res.json ());
   }

}
我一直在说同样的错误:

OPTIONS http: // XXX: 1026 / v2 / entities / 405 (Method Not Allowed)
Failed to load http: // XXX: 1026 / v2 / entities /: Response to preflight request does not pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http: // localhost: 4200' is therefore not allowed access. The response had HTTP status code 405.
这一定是FiwareAPI的问题,因为我用nodejs设计了一个,更改URL没有问题

更新:

Limpiando repositorios:base epel extras fiware mongodb-org-3.2
                     : mysql-connectors-community mysql-tools-community
                     : mysql57-community nodesource updates
Limpiando todo
Cleaning up list of fastest mirrors
[root@UAL-IoF2020 ~]# yum install contextBroker
Complementos cargados:fastestmirror, refresh-packagekit, security
Configurando el proceso de instalación
Determining fastest mirrors
epel/metalink                                            |  25 kB     00:00     
 * base: ftp.uma.es
 * epel: ftp.uma.es
 * extras: ftp.uma.es
 * updates: ftp.uma.es
base                                                     | 3.7 kB     00:00     
base/primary_db                                          | 4.7 MB     00:00     
epel                                                     | 4.7 kB     00:00     
epel/primary_db                                          | 6.0 MB     00:00     
extras                                                   | 3.4 kB     00:00     
extras/primary_db                                        |  29 kB     00:00     
fiware                                                   |  951 B     00:00     
fiware/primary                                           |  45 kB     00:00     
mongodb-org-3.2                                          | 2.5 kB     00:00     
mongodb-org-3.2/primary_db                               |  78 kB     00:00     
mysql-connectors-community                               | 2.5 kB     00:00     
mysql-connectors-community/primary_db                    |  18 kB     00:00     
mysql-tools-community                                    | 2.5 kB     00:00     
mysql-tools-community/primary_db                         |  38 kB     00:00     
mysql57-community                                        | 2.5 kB     00:00     
mysql57-community/primary_db                             | 139 kB     00:00     
nodesource                                               | 2.5 kB     00:00     
nodesource/primary_db                                    |  51 kB     00:00     
updates                                                  | 3.4 kB     00:00     
updates/primary_db                                       | 6.4 MB     00:00     
El paquete contextBroker-1.7.0-1.x86_64 ya se encuentra instalado con su versión más reciente
Nada para hacer

我认为您需要升级到1.10版,以便可以使用CORS


您不需要添加任何标题;)实际上,Access Control Allow Origing标头是在服务器响应中发送的,而不是通过客户端请求发送的

CORS请求仅受Orion Context Broker 1.10及更高版本的支持

正如@JoseManuelCantera所指出的,您不需要向请求中添加任何CORS特定的头,这些头由您的客户端(浏览器、邮递员等)处理

您需要:

  • 将您的版本升级到1.10
  • 在CORS模式下启动猎户座
  • 您可以在CORS模式下为任何来源启动Orion(Orion将接受来自任何来源的CORS请求),如下所示:

    contextBroker -corsOrigin __ALL
    
    有关更多信息,请查看

    更新

    请允许我简要解释CORS飞行前逻辑。如果您的请求不是,您的浏览器将使用OPTIONS方法在您的请求之前执行。如果Orion未在CORS模式下启动,您将始终得到方法不允许作为对非简单请求的响应

    那么什么是问题,为什么不同的客户会得到不同的结果?邮递员(curl等)完全按照您的要求执行,并按照您的配置发送请求。它不会检查您正在发送的请求是否应该预处理

    另一方面,您的浏览器会检查您的请求,并在必要时进行飞行前检查。除了修改您的请求之外,您对此没有任何控制权

    您正在使用的Javascript框架可能正在向请求添加一个头,使其成为“非简单”请求。例如:
    X-request-With
    。请看问题

    我的建议是查看浏览器发送的请求的详细信息(标题、方法等),看看是什么使它成为一个非简单的请求。然后对js代码进行必要的更改,以确保您的请求属于简单请求的范围


    话虽如此,您最终需要升级您的Orion版本,因为例如,当通过浏览器发送删除请求时,永远不会将其视为简单请求。

    您是否可以编辑您的问题,以包含有关Orion运行方式的信息?我的意思是
    ps ax | grep contextBroker
    。此外,还包括Orion版本,即
    contextBroker--version | head-n1
    。谢谢使用所需信息编辑post@fgalan您好,我的想法不是添加该标题,但它给了我一个很糟糕的错误,我添加了:Access Control Allow Origin':'*'我将尝试更新,但我的想法是不使用任何标题,它只是能够咨询apiEl paquete contextBroker-1.7.0-1.x8664,这是一个新的安装版本,它可以接收不到任何数据的数据。简化埃斯托伊庄园。邮递员和干舷功能完美,客户角度错误。没有人会因为协商而简化我的错误。你有什么问题吗?他在解决问题的过程中遇到了困难。通过paquete RPM实现instalación。在奥里安1.7.0版的《高级帕克斯公园》中,我们看到的是一辆自行车。Tendrás que installar Orion 1.10.0 por otras vias…Estoy descargando la version nueva de aqí:pero cuando intent hacer el MAKE me da este error:./scripts/build/compileInfo.sh——发布致命:不是git存储库(或任何父目录):.gitEl paquete contextBroker-1.7.0-1.x8664ya se Encurentra instalado con su versión más reciente Nada para hacerHello,我的想法不是添加该标题,但由于它给了我一个错误,我添加了:访问控制允许源代码“:”*“我会尝试更新,但我的想法是不使用其中任何一个,只是能够查阅API,你有没有检查升级版本的文档?另外,您第一次安装Orion的方法是什么?但我的问题是,如果我使用http://xxx:1026/v2/entities,而不是在这里,那么在邮递员和干舷中,为什么需要使用CORS。更新使用:yum install contextBrokerIn此帖子不是1.10版,在哪里可以找到包含该版本的更新存储库。