Granice nagłówków HTTP ASCII
Zbuduj nagłówek HTTP ASCII z nazwy i wartości.
import re
TOKEN = re.compile(r"[!#$%&'*+.^_`|~0-9A-Za-z-]+")
def header_line(name, value):
if not isinstance(name, str) or not TOKEN.fullmatch(name):
raise ValueError("header name")
if not isinstance(value, str) or any(not 32 <= ord(c) <= 126 for c in value):
raise ValueError("ASCII header value")
return name + ": " + value| Projekt | Odrzuć błędne znaki nazwy, nowe linie, znaki sterujące i tekst spoza ASCII, dopuszczając pustą wartość bez dodatkowego nagłówka. |
|---|---|
| Sprawdź przed zastosowaniem | Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami. |
| Modele | Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie. |
import re
TOKEN = re.compile(r"[!#$%&'*+.^_`|~0-9A-Za-z-]+")
def header_line(name, value):
if not isinstance(name, str) or not TOKEN.fullmatch(name):
raise ValueError("header name")
if not isinstance(value, str) or any(not 32 <= ord(c) <= 126 for c in value):
raise ValueError("ASCII header value")
return name + ": " + valueWyznacz jasną granicę wejścia dla kodu budującego żądania
HeaderAnvil przenosi pracę nad budowaniem żądań do środowiska programistycznego Windows z podłączoną rozmową z AI. Zacznij od nazwania nagłówka, który aplikacja ma budować, i wartości, które ma akceptować. Zamienia to ogólną prośbę o wzmocnienie walidacji w możliwą do oceny zmianę na konkretnej granicy kodu.
Możesz na przykład poprosić asystenta o zbadanie dostarczonej funkcji formatującej nagłówki ASCII wraz z rzeczywistym kodem klienta. Jej kontrole nazwy i wartości dają konkretny materiał do rozmowy, ale nie definiują każdego zastosowania HTTP. Wyjaśnij wymagany kontrakt wejścia aplikacji przed prośbą o szerszą akceptację lub surowsze odrzucanie.
Następnie sprawdź, gdzie działa proponowana kontrola i jak jej błąd dociera do kodu wywołującego. Odrzucona wartość jest użyteczna tylko wtedy, gdy otaczająca ścieżka żądania świadomie obsługuje ten wynik. Przetestuj zwykłe wejście i zabronione znaki na własnych przypadkach projektu, następnie sprawdź budowanie żądania i raportowanie błędów przed uznaniem zadania za zakończone.
Model AI bez ograniczeń może wspierać tę pracę, jeśli jest dostępny przez obsługiwany punkt końcowy zgodny z OpenAI lub Anthropic. Skonfiguruj punkt końcowy i wymagane dane uwierzytelniające oraz uwzględnij specyficzne limity kontekstu i obsługę narzędzi modelu. Jego etykieta nie usuwa ograniczeń dostawcy ani nie dowodzi, że sugerowany walidator odpowiada wymaganiom protokołu aplikacji.
Pytania o zmianę budowania nagłówków
- Jaki kontrakt określić dla własnego nagłówka?
Wskaż akceptowane znaki, zasady pustej wartości i oczekiwane zachowanie przy błędzie w aplikacji. Dołącz kod korzystający ze sformatowanej linii. Nie proś modelu o wywnioskowanie pełnej polityki protokołu z jednej przykładowej wartości.
- Czy przykład ASCII można traktować jako uniwersalny walidator HTTP?
Nie. Ilustruje celowo wąski kontrakt na poziomie kodu. Przed rozszerzeniem sprawdź wymagania faktycznie używanego klienta i ścieżki protokołu oraz testuj zmiany względem tej implementacji, zamiast zakładać uniwersalną zgodność.
- Gdzie sprawdzać sposób zgłaszania nieprawidłowego wejścia?
Prześledź kod wywołujący funkcję formatującą przez tworzenie żądania i obsługę błędów. Zapytaj, czy błąd zatrzymuje żądanie, staje się komunikatem dla użytkownika, czy jest logowany. Oceń proponowane zachowanie na tej granicy oraz wewnątrz walidacji.
- Jak udostępnić zawodzące żądanie bez wysyłania danych uwierzytelniających?
Zastąp tajne wartości reprezentatywnymi symbolami zastępczymi zachowującymi istotne znaki i strukturę. Dołącz kod budowania i zaobserwowany błąd. Wybrany model potrzebuje przypadku walidacji, nie rzeczywistej wartości autoryzacji usługi.
HeaderAnvil · Zaktualizowano 2026-10-25