我使用带有ARR和URL重写的IIS作为反向代理,以支持与ElasticSearch服务器的HTTPS连接。据我所知,ES已正确配置,并且与ES的直接HTTP连接不会导致错误。
但是,当我通过代理连接时,我在浏览器中收到此错误:
阻止跨源请求:同源策略禁止读取 https://myserver:19201/myindex/_search处的远程资源。 (原因: 遗失令牌'授权'在CORS标题中 '接入控制允许集管'来自CORS预检频道)
elasticsearch.yml文件的相关部分是:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: ["X-Requested-With","X-Auth-Token","Content-Type","Content-Length","Authorization","engine-name"]
http.cors.allow-credentials: true
我需要做些什么特别的事情才能通过代理启用这些请求,或者这是一个傻瓜的差事,我应该寻找另一种选择吗?
答案 0 :(得分:0)
您可以在 web.config 下自己编写标题,如您在 this 答案中看到的那样。
但最好使用官方模块:IIS CORS module。
在你的情况下,你需要这个配置:
<cors enabled="true">
<add origin="THE_URL_YOU_USE_IN_YOUR_BROWSER" allowCredentials="true">
<allowHeaders allowAllRequestedHeaders="true">
<add header="X-Requested-With" />
<add header="X-Auth-Token" />
<add header="Content-Type" />
<add header="Content-Length" />
<add header="Authorization" />
<add header="engine-name" />
</allowHeaders>
<allowMethods>
<add method="GET" />
<add method="OPTIONS" />
<add method="POST" />
<add method="DELETE" />
<add method="PUT" />
<add method="HEAD" />
</allowMethods>
</add>
</cors>
答案 1 :(得分:-1)
因此,应该使其工作的一种方法是将CORS设置为允许所有来源:
Access-Control-Allow-Origin: *
您可以在IIS的HTTP响应标题下进行设置。
但是,这首先违反了使用CORS的目的,并且从安全角度考虑,不建议这样做。