node.js - 设置授权后 Express-Gateway 响应错误

标签 node.js express microservices express-gateway

尝试在请求 header 中设置授权 key (key-auth) 时收到错误 404。我确信我的 key 没有任何问题,因为如果我不设置它,就会返回“禁止”状态。

在设置任何凭据之前:

$ curl http://localhost:8080/ip

将返回:

{
  "origin": "5.116.28.133"
}

创建 key 身份验证凭据后:

$ curl -H "Authorization: apiKey ${keyId}:${keySecret}" http://localhost:8080/ip

将返回:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /ip</pre>
</body>
</html>

这是我的网关配置:

http:
  port: 8080
admin:
  port: 9876
  hostname: localhost
apiEndpoints:
  api:
    host: localhost
    paths: '/ip'
serviceEndpoints:
  httpbin:
    url: 'https://httpbin.org'
policies:
  - basic-auth
  - cors
  - expression
  - key-auth
  - log
  - oauth2
  - proxy
  - rate-limit
pipelines:
  - name: default
    apiEndpoints:
      - api
    policies:
    - key-auth:
      - proxy:
          - action:
              serviceEndpoint: httpbin 
              changeOrigin: true

有人知道为什么会出现这个问题吗?

http://www.express-gateway.io/查找有关express-gateway的更多信息

最佳答案

应该是key-auth 问题出在缩进

- key-auth:
       - proxy:

它必须在一个级别

基本上这是一个数组:

policies: [{
    'key-auth':null
    },{
    proxy:{ ... }   
}]

这将解决问题。

关于node.js - 设置授权后 Express-Gateway 响应错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45534252/

相关文章:

web-services - 微服务和Web服务有什么区别?

javascript - 从具有零个或 1 个条目的 Map 获取值?

javascript - 无法启动 webpack/找不到 webpack

node.js - 如何在 package.json (nodeJs)中创建跨平台脚本(单行的多个命令)

node.js - Sailsjs 模块

javascript - 通过ejs模板执行onclick函数

node.js - 错误: EACCES: permission denied with forever

javascript - 访问本地主机:3000 through localhost/myproject/index. html

amazon-web-services - 架构Kubernetes +微服务

rest - 通过 REST 和消息队列使用微服务和多输入的 DDD