我是 Kong 的新手,并且已启用 key-auth 插件的设置。所以当我去https://localhost:32443
I get {"message":"No API key found in request"}
。如果我指定一个 apikey,我会得到应用程序的主页,但它是空白的。第一个请求成功并收到 200 响应 -https://localhost:32443/?apikey=EMCmOc4oE3KjE3CtCoqqDZ9cBM8mEJWjDcOuPJLXPZCmOJbb
- 因为它包含“apikey”。该页面发出的下载缩小 JS 和 CSS 的所有后续请求都会失败并返回 401,因为它们不包含“apikey”。我尝试将应用程序配置为使用“会话”插件,但不确定这是否正确,或者我只是没有正确配置它。
Request URL: https://localhost:32443/favicon.ico
Request Method: GET
Status Code: 401
Remote Address: 127.0.0.1:32443
Referrer Policy: no-referrer-when-downgrade
content-length: 41
content-type: application/json; charset=utf-8
date: Sun, 06 Sep 2020 07:32:32 GMT
server: kong/2.0.4
status: 401
www-authenticate: Key realm="kong"
x-kong-response-latency: 1
:authority: localhost:32443
:method: GET
:path: /favicon.ico
:scheme: https
accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cookie: session_2=dhhdjdjdjjd...
referer: https://localhost:32443/?apikey=EMCmOc4oE3KjE3CtCoqqDZ9cBM8mEJWjDcOuPJLXPZCmOJbb
sec-fetch-dest: image
sec-fetch-mode: no-cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/85.0.4183.83 Safari/537.36
如果我手动将“apikey”添加到新选项卡中的网站图标请求中,则它可以正常加载。我不确定是否缺少一些配置,可以自动对所有请求执行此操作?
非常感谢
也许现在有点晚了但我尝试回答这个问题
一般来说,使用带有 API 密钥的主页 UI 并不是一个好主意。
将查询传递给后续调用
据我所知,将您的 API 密钥附加到您的 html 将启动的所有后续请求中是不可能的。
据我所知服务人员 https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API有能力拦截并修改请求 https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent。他们可以将您的查询附加到所有请求中。缺点是它们仅适用于 https,旧浏览器不支持它们
UI 的 API 密钥
如果您问我,您应该使用 API 密钥进行 api 调用,而不是用于 UI。
选择
在我看来基本认证 https://docs.konghq.com/hub/kong-inc/basic-auth/将是更好/最接近的选择,因为您的浏览器将保护这些设置并将这些凭据(标头)包含到所有后续请求中,以便您的 UI 可以加载其他内容。如果您决定更改基本身份验证凭据,您可以轻松更改/删除它们,并且权限将消失。
但是如果我仍然想对 UI 使用 API 密钥怎么办?
如果您想使用 api 密钥作为登录名,您可以使用会话。
此会话将创建一个发送到您的浏览器的 cookie。
BUT
从现在起,所有其他后续请求将不再需要 api 密钥。即使您删除了 api-key,会话(cookie)仍然有效,直到过期为止,您不会实现自定义逻辑来处理这些情况(绑定密钥和会话内部)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)