**Вопрос**: Что в Go `http.Client`с кастомным `Transport` (пустой `TLSNextProto` + `TLSClientConfig`) может вызывать 403 только на POST, при том что:
1. Отдельная Go-программа с идентичным TLS-конфигом делает POST успешно (201)
2. curl делает POST успешно
3. GET-запросы через тот же `doRequest` работают
Есть ли способ дампнуть сырые байты TLS-хендшейка или HTTP-запроса из провайдера (не из тестовой программы), чтобы сравнить с curl?
Список задач обновлен
Ключевой факт: **standalone Go-программа с тем же кодом → 201, провайдер → 403**. Значит причина не в TLS-конфиге и не в заголовках — она в окружении или состоянии самого провайдера.
---
## Четыре кандидата
### #1 (самый вероятный): `HTTPS_PROXY` в окружении Terraform
`http.DefaultTransport.Clone()` копирует `Proxy: http.ProxyFromEnvironment`. Если при `terraform apply` выставлена переменная `HTTPS_PROXY`, трафик пойдёт через прокси. Прокси может GET пропускать (кэш), а POST — блокировать или трансформировать.
Standalone-тест работает? Проверьте, запускался ли он в том же shell с теми же env:
```bash
env | grep -i proxy
```
Фикс — убрать прокси из transport:
```go
transport.Proxy=nil// добавить в provider.go
```
---
### #2: `DefaultTransport` уже модифицирован до `Clone()`
Terraform Plugin Framework инициализирует gRPC-транспорт и **может изменить глобальный `http.DefaultTransport`** до того, как ваш `Configure` его клонирует. Standalone-тест стартует с чистым DefaultTransport.
Фикс — не клонировать DefaultTransport, создать с нуля:
### #3: Повторное использование TCP-соединения (keep-alive)
Провайдер: клиент создаётся один раз → GET занимает соединение → POST переиспользует то же соединение из пула. DDoS-Guard или ColdFusion может иметь правило: POST на keep-alive соединении после GET = подозрительно.
Standalone-тест: свежий клиент → каждый запрос на новом соединении.
Быстрая проверка — добавить `req.Close = true` (форсирует новое соединение на каждый запрос):
```go
req.Close=true
```
Если после этого POST пройдёт — причина именно в connection reuse.
---
### #4: Параллельность в Terraform
Terraform может запускать несколько `Create` параллельно. Rapid-fire POST'ы с одного IP → DDoS-Guard rate limit → 403. Standalone-тест делает один POST.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.