Проект
Проверьте регистр и игнорируйте пути, отклоняя учётные данные, IP-адреса, пробелы и порты вне 1–65535.
Orivelle — Windows-клиент для обсуждения с ИИ ограниченных правил HTTPS-origin. Откройте проект, подключите совместимую модель и проверьте сравнение хостов и портов до принятия предложенной правки.
import re
from urllib.parse import urlsplit
def https_origin(url):
if type(url) is not str or any(not 33 <= ord(c) <= 126 for c in url):
raise ValueError("origin.text")
p = urlsplit(url)
if p.scheme.lower() != "https" or p.username is not None or p.password is not None:
raise ValueError("origin.scheme")
host = p.hostname or ""
labels = host.lower().split(".")
if len(labels) < 2 or not re.fullmatch(r"[a-z]{2,63}", labels[-1]):
raise ValueError("origin.dns")
if any(not re.fullmatch(r"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?", x) for x in labels):
raise ValueError("origin.label")
if len(host) > 253 or p.netloc.endswith(":") or "\\" in url:
raise ValueError("origin.authority")
port = p.port if p.port is not None else 443
if not 1 <= port <= 65535:
raise ValueError("origin.port")
return ("https", host.lower(), port)
def same_origin(a, b):
return https_origin(a) == https_origin(b)Проверьте регистр и игнорируйте пути, отклоняя учётные данные, IP-адреса, пробелы и порты вне 1–65535.
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
Базовый URL, учётные данные и доступный сервер.
import re
from urllib.parse import urlsplit
def https_origin(url):
if type(url) is not str or any(not 33 <= ord(c) <= 126 for c in url):
raise ValueError("origin.text")
p = urlsplit(url)
if p.scheme.lower() != "https" or p.username is not None or p.password is not None:
raise ValueError("origin.scheme")
host = p.hostname or ""
labels = host.lower().split(".")
if len(labels) < 2 or not re.fullmatch(r"[a-z]{2,63}", labels[-1]):
raise ValueError("origin.dns")
if any(not re.fullmatch(r"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?", x) for x in labels):
raise ValueError("origin.label")
if len(host) > 253 or p.netloc.endswith(":") or "\\" in url:
raise ValueError("origin.authority")
port = p.port if p.port is not None else 443
if not 1 <= port <= 65535:
raise ValueError("origin.port")
return ("https", host.lower(), port)
def same_origin(a, b):
return https_origin(a) == https_origin(b)Orivelle предоставляет разработчикам приложений среду программирования с ИИ для Windows для изучения решений на входных границах. Откройте проект и опишите, какие входы нужно принимать, отклонять или считать эквивалентными. До изменения правила попросите модель изучить текущую реализацию, особенно когда окружающий код опирается на узкую интерпретацию.
Один практический запрос — ограниченное сравнение HTTPS-origin. Предоставьте примеры с явными портами и портами по умолчанию, именами хостов со смешанным регистром и входами вне допустимого подмножества. Спросите, как текущий код их обрабатывает и какой результат должен получать вызывающий код. Так обсуждение связано с политикой приложения, а не предполагаемым универсальным правилом URL.
Проверяйте в предложении нормализацию и отказы. Принятие ранее отклонявшейся формы может расширить контракт, даже если сравнение выглядит аккуратнее. Запустите тесты проекта и изучите места вызова, зависящие от совпадения, включая реакцию на некорректный ввод. Документируйте допустимое подмножество вместе с изменением.
Orivelle подключается к поддерживаемым конечным точкам, совместимым с OpenAI или Anthropic, с учётными данными при необходимости. Модель ИИ с абляцией ограничений можно выбрать, если она доступна у вашей конечной точки. Модель и сервер определяют инструменты, пределы контекста и оставшиеся ограничения; название не удостоверяет решения о безопасности и не заменяет проверку кода, который вы собираетесь использовать.
Разбор и принятие приложением — отдельные решения. Используйте парсер для получения компонентов, затем проверяйте разрешённые схемы и формы хостов. Попросите модель найти места соблюдения правил, а не предполагать, что успешный разбор означает принятие.
Да. Переписывание может исправлять или переинтерпретировать значения, отклоняемые старым кодом. Добавьте отклоняемые тесты вместе с эквивалентными допустимыми и проверьте реакцию вызывающего кода. Явно решите, входит ли каждая новая принимаемая форма в контракт приложения.
Нет. Описанное сравнение касается правила origin в вашем коде. Оно не устанавливает надёжность удалённого сервиса или безопасность последующего запроса. Проверяйте эти отдельные требования там, где приложение делает запрос.
Предпочитайте синтетические имена хостов и исключайте учётные данные, если они не нужны для случая отказа. Проверяйте адресатов конечной точки и инструментов. Отдельно работающий локальный сервер модели не делает все подключённые инструменты локальными, включая инструменты изучения URL.
Orivelle · Обновлено 2026-10-25