OOrivelle
AIコーディングワークスペース

制約付きHTTPSオリジン比較

ASCIIのDNS名と英字の接尾辞を使うHTTPSオリジンを既定ポート443で比較してください。

● ● ●Orivelle●
ワークフロー · 制約付きHTTPSオリジン比較 ×
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)
✳制約付きHTTPSオリジン比較
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

プロジェクト

大文字小文字を試してパスを無視し、認証情報、IPリテラル、空白、1–65535以外のポートを拒否してください。

02

適用前に確認

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

03

モデル

OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。

ワークフロー

制約付きHTTPSオリジン比較

ワークフロー ↗
ワークフロー
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)
AIコーディングワークスペース

URLの受け入れとオリジンの判定を明示する

Orivelleは、入力境界での判断を調べるアプリケーション開発者向けのWindows AIコーディング環境です。プロジェクトを開き、受け入れる入力、拒否する入力、同値と見なす入力を説明してください。特に周囲のコードが限定的な解釈に依存する場合は、規則を変える前に現在の実装をモデルに確認させます。

限定したHTTPSオリジンの比較は実践的な依頼の1つです。明示ポートと既定ポート、大文字小文字が混在するホスト名、受け入れる部分集合に含まれない入力の例を提示します。現在のコードによる扱いと、呼び出し側が受け取るべき結果を尋ねてください。普遍的なURL規則を想定せず、アプリケーションの方針に沿った議論になります。

正規化と拒否の動作の両方について提案を確認します。以前は拒否した形を受け入れると、比較がすっきり見えても仕様が広がる場合があります。プロジェクトテストを実行し、不正な入力への応答も含め、一致に依存する呼び出し箇所を調べてください。受け入れる部分集合を変更と一緒に文書化しておきます。

Orivelleは対応するOpenAI互換またはAnthropicのエンドポイントに、必要な認証情報を使って接続します。エンドポイントで利用可能ならアブリテレーション済みAIモデルを選べます。ツール、コンテキスト上限、残る制限はモデルとサーバーが決めます。その呼び名はセキュリティ上の判断を保証せず、使う予定のコードのレビューに代わるものでもありません。

オリジンの規則を変更する前に

汎用URLパーサーに方針全体を決めさせるべきですか?

解析とアプリケーションでの受け入れは別の判断です。パーサーで構成要素を取得し、どのスキームとホスト形式をコードが許可するか確認します。解析の成功を受け入れと見なさず、規則を強制している場所をモデルに特定させてください。

正規化で受け入れる入力が意図せず広がることはありますか?

はい。書き換えで、旧コードが拒否した値を補正したり再解釈したりする場合があります。同値で受け入れるケースと共に拒否ケースも含め、呼び出し側の応答を確認してください。新たに受け入れる形を仕様に含めるか明示的に決めます。

オリジンの一致はリモートサービスを検証しますか?

いいえ。この比較はコードのオリジン規則を扱います。リモートサービスの信頼性や後続リクエストの安全性は確立しません。アプリケーションがリクエストする箇所で、それらを別の要件として確認してください。

診断用データに本番URLや認証情報を含めるべきですか?

架空のホスト名を優先し、拒否ケースに不可欠でなければ認証情報を省いてください。エンドポイントとツールの送信先を確認します。別途動かすローカルのモデルサーバーを使っても、URLを確認するツールを含め、すべての接続ツールがローカルになるわけではありません。

Windows版をダウンロード ↗

Orivelle · 更新日 2026-10-25