Kong Gateway管理程序在Docker环境下:如何为控制台配置CORS(Cross-Origin Resource Sharing)
我正在 Docker 上运行 Kong 镜像 kong-docker-kong-gateway-docker.bintray.io/kong-enterprise-edition:2.3.2.0-alpine。
我使用以下命令初始化了整个环境:
docker network create kong-net
docker run --network=kong-net -it -p 15432:5432 -v kong-datastore:/var/lib/postgresql/data -e POSTGRES_DB=api-gw -e POSTGRES_USER=kong -e POSTGRES_PASSWORD=kongPwd --name kong-db kong-db:1.0
docker run --rm --network=kong-net -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-db" -e "KONG_PG_DATABASE=api-gw"-e "KONG_PG_PASSWORD=kongPwd" -e "KONG_PASSWORD=abcde12345" kong:1.0 kong migrations bootstrap
docker run --network=kong-net -it -p 80:80 -p 8000:8000 -p 8001:8001 -p 8443:8443 -p 8444:8444 -p 8002:8002 -p 8445:8445 -p 8003:8003 -p 8004:8004 -e "KONG_DATABASE=postgres" -e "KONG_PG_HOST=kong-db" -e "KONG_PG_DATABASE=api-gw"-e "KONG_PG_PASSWORD=kongPwd" -e "KONG_PASSWORD=01Ko1996" kong:1.0
然后我成功地添加了服务、路由和插件,可以通过管理界面 http://localhost:8002 进行访问。
但是当我尝试编辑一个插件(例如:尝试将其设置为禁用状态 ["Plugins", 选择一个插件,点击“编辑”,关闭“此插件已启用”开关,点击“更新”并确认])时,我的浏览器(Chrome)会报告以下错误:
Access to XMLHttpRequest at 'http://localhost:8001/default/services/0978929a-595d-427a-938e-44c29bae4f7d/plugins/cb0e382f-9be3-4a17-bde2-d2dc7c40384a' from origin 'http://localhost:8002' has been blocked by CORS policy: Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.
这似乎是由于 CORS 策略从本机界面 localhost:8002 到本地 API localhost:8001 拒绝了 PATCH HTTP 动词。
请注意,此问题并不涉及向服务/路由进行 CORS 配置,而仅涉及 Kong 管理器内部。
我已经尝试了以下方法:
在镜像中上传了一个名为 /etc/kong/kong.conf 的文件,其中包含以下配置:
portal_cors_origins = http://localhost:8001, https://localhost:8002, http://localhost:8003, https://localhost:8004还尝试了以下配置:
portal_cors_origins = *以以下环境变量启动容器(在 docker-compose 的文件中):
KONG_PORTAL_CORS_ORIGINS: http://localhost:8001, https://localhost:8002, http://localhost:8003, https://localhost:8004还尝试了以下配置:
KONG_PORTAL_CORS_ORIGINS: "*"以以下环境变量启动容器(在 docker-compose 的文件中):
NGINX_PROXY_SET_HEADER: Origin ""在镜像中上传了一个名为 /usr/local/openresty/nginx/conf/nginx.conf 的文件,其中包含以下配置(以及其他 ngnix 配置):
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; add_header 'Access-Control-Allow-Origin' "*"; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT, PATCH'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type'; }
Kong 管理器应如何配置以允许 CORS 并解决此问题?
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你可能已经查看了配置参考文档: https://docs.konghq.com/enterprise/2.6.x/property-reference/
portal_XXX设置用于控制开发门户,而不是Kong管理器。尝试在/etc/kong/kong.conf文件中更改这两个属性:
admin_gui_url = *并在监听列表中添加主机名。对我来说,我正在另一台机器上使用Web浏览器(Windows)。
admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384,{host name}:8001 reuseport backlog=16384