首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在网页登录时不允许使用405方法

为什么在网页登录时不允许使用405方法
EN

Stack Overflow用户
提问于 2020-08-03 23:07:35
回答 1查看 745关注 0票数 0

我在kubernetesv1.18集群中安装了港口,让我困惑的是,当我使用默认用户名和密码登录港口时,它给我的错误是:405 Method Not Allowed

405显示您应该使用GET,但实际上使用的是POST错误,我认为港口登录页面不会使此mistake.why会发生这种情况,我应该做什么来修复它?顺便说一下,这是kubernetes traefik配置:

代码语言:javascript
复制
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`)
      services:
        - name: harbor-harbor-portal
          port: 80
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/c`)
      services:
        - name: harbor-harbor-core
          port: 80
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/v2`)
      services:
        - name: harbor-harbor-core
          port: 80
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/api`)
      services:
        - name: harbor-harbor-core
          port: 80
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/service`)
      services:
        - name: harbor-harbor-core
          port: 80
    - kind: Rule
      match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/chartrepo`)
      services:
        - name: harbor-harbor-core
          port: 80

kubernetes入口是traefik 2.2.1。这是kubernetes pod中港口门户的日志输出:

代码语言:javascript
复制
2020-08-03T16:50:17.415502118Z  10.11.157.67 - - [03/Aug/2020:16:50:17 +0000] "GET / HTTP/1.1" 200 856 "-" "Go-http-client/1.1"
2020-08-03T16:50:18.242118851Z  192.168.31.30 - - [03/Aug/2020:16:50:18 +0000] "GET / HTTP/1.1" 200 856 "-" "kube-probe/1.18"
2020-08-03T16:50:18.307214547Z  192.168.31.30 - - [03/Aug/2020:16:50:18 +0000] "POST /c/login HTTP/1.1" 405 559 "http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
2020-08-03T16:50:19.233495082Z  192.168.31.30 - - [03/Aug/2020:16:50:19 +0000] "POST /c/login HTTP/1.1" 405 559 "http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"

从港口门户kubernetes pod发送请求:

代码语言:javascript
复制
nginx [ / ]$   curl -X POST 'http://localhost:8080/c/login' \
>   -H 'Connection: keep-alive' \
>   -H 'Accept: application/json, text/plain, */*' \
>   -H 'DNT: 1' \
>   -H 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36' \
>   -H 'Content-Type: application/x-www-form-urlencoded' \
>   -H 'Origin: http://harbor-portal.dolphin.com' \
>   -H 'Referer: http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects' \
>   -H 'Accept-Language: en,zh-CN;q=0.9,zh;q=0.8,zh-TW;q=0.7,fr;q=0.6' \
>   --data-raw 'principal=admin&password=Harbor123456' \
>   --compressed \
>   --insecure
<html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.16.1</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
EN

回答 1

Stack Overflow用户

发布于 2021-05-20 10:27:09

我通过helm和alb入口安装了港口(v1.10.4)。当使用正确的用户名和密码登录时,它会返回405错误。

遵循这个问题(https://github.com/goharbor/harbor-helm/issues/485#issuecomment-686222551),我解决了这个问题。关键原因是入口规则将登录请求引导到门户。只需将与门户相关的规则更改为但可以解决它。

回源入口:

代码语言:javascript
复制
spec:
  rules:
  - host: harbor.xxx.com
    http:
      paths:
      - backend:
          serviceName: harbor-harbor-portal
          servicePort: 80
        path: /*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /api/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /service/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /v2/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /chartrepo/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /c/*
        pathType: ImplementationSpecific

修改后:

代码语言:javascript
复制
spec:
  rules:
  - host: harbor.xxx.com
    http:
      paths:
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /api/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /service/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /v2/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /chartrepo/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-core
          servicePort: 80
        path: /c/*
        pathType: ImplementationSpecific
      - backend:
          serviceName: harbor-harbor-portal
          servicePort: 80
        path: /*
        pathType: ImplementationSpecific
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63232003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档