Email or username:

Password:

Forgot your password?
овл 🍍🍕

@rf Люди умные, подскажите как диагностировать bad request?
Пытаюсь автоматизировать регистрацию SSH ключей в gitlab. Запрос списка колючей проходит нормально, но когда отправляю новый - в ответ bad request :/
Команды скопипиздил отсюда askubuntu.com/questions/116275

11 comments | Expand all CWs
D:\side\

@nutsowl а можно конкретный пример сделанного запроса, на который гитлаб отвечает бэд-реквестом? Обычно такая непрозрачная ошибка касается чего-то действительно кривого в запросе даже по меркам HTTP, безотносительно приложения, типа синтаксически сломанного JSON при верном Content-Type.

овл 🍍🍕

@dside Практически никаких изменений относительно инструкции:

```
curl -d '{"title":"${KEY}",\"key":"'"$(cat ~/.ssh/${KEY}.pub)"'"}' -H 'Content-Type: application/json' gitlab.com/api/v4/user/keys?pr${TOKEN}
```

Здесь KEY=testkey
а TOKEN=abCdef-Gkjml

овл 🍍🍕

@dside Кусок вывода с -v:
* We are completely uploaded and fine
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/2 400
< server: cloudflare
< date: Tue, 12 Nov 2024 09:28:01 GMT
< content-type: text/html
< content-length: 155
< cf-ray: 8e157d501abdc415-LED
<
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>
</html>
* Connection #0 to host gitlab.com left intact

В целом я понял, что все ломается об cloudflare, но понимания как фиксить это не добавляет :/

@dside Кусок вывода с -v:
* We are completely uploaded and fine
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/2 400
< server: cloudflare
< date: Tue, 12 Nov 2024 09:28:01 GMT
< content-type: text/html
< content-length: 155
< cf-ray: 8e157d501abdc415-LED
<
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>

овл 🍍🍕

@dside Нашел лишний слеш перед "key", спасибо за наводку!

D:\side\

@nutsowl эх, не успел я предложить отправить кусок команды с ручным конструированием JSON'а в jq на проверку.

овл 🍍🍕

@dside т.к. я только погружаюсь во все эти вещи, мне оочень помог твой коммент, спасибо! Если развернёшь мысль про jq это меня спасёт в следующий раз)

D:\side\

@nutsowl поскольку такое ручное конструирование JSON'а из строк особо не контролируется на корректность, то оно чуть ли не первоочередной кандидат на перепроверку, и я бы предложил изолировать ту строку и проверить её вот таким образом:
```
echo тот_кусок_команды | jq .
```

овл 🍍🍕

@dside Прикольно, дальше буду сразу через jo собирать такие вещи

Mirivlad

@nutsowl для начала я бы сравнил итоговый вид обоих запросов. Если разные - копать в сторону приведения к виду того запроса что верный. Если одинаковые - возможно требуется каждый раз новый токен для доступа к api

овл 🍍🍕

@mirivlad Очень большая разница т.к. один запрос GET, другой POST.
Уже нашел ошибку - кривые клешни) Спасибо за участие!

Mirivlad

@nutsowl не хватает информации в виде копипасты запросов (токен можно удалить)

Go Up