為确保插件隻能在它們控制的資源上執行操作,OpenAI對插件的清單和API規範強制執行要求。
定義插件的根域
清單文件定義了顯示給用戶的信息(如徽标和聯系信息)以及托管插件的OpenAPI規範的URL。獲取清單時,插件的根域将按照以下規則建立:
- 如果域名有www.作為子域名,那麼根域名将從托管清單的域名中去掉www。
- 否則,根域名與托管清單的域名相同。
關于重定向的注意事項:在解析清單時,隻允許子域名重定向。唯一的例外是從一個帶有www的子域名重定向到一個沒有www的子域名。
根域名的示例:
- ✅ https://example.com/.well-known/ai-plugin.json
- 根域名:example.com
- ✅ https://www.example.com/.well-known/ai-plugin.json
- 根域名:example.com
- ✅ https://www.example.com/.well-known/ai-plugin.json → 重定向到 https://example.com/.well-known/ai-plugin.json
- 根域名:example.com
- ✅ https://foo.example.com/.well-known/ai-plugin.json → 重定向到 https://bar.foo.example.com/.well-known/ai-plugin.json
- 根域名:bar.foo.example.com
- ✅ https://foo.example.com/.well-known/ai-plugin.json → 重定向到 https://bar.foo.example.com/baz/ai-plugin.json
- 根域名:bar.foo.example.com
- ❌ https://foo.example.com/.well-known/ai-plugin.json → 重定向到 https://example.com/.well-known/ai-plugin.json
- 不允許重定向到父級域名
- ❌ https://foo.example.com/.well-known/ai-plugin.json → 重定向到 https://bar.example.com/.well-known/ai-plugin.json
- 不允許重定向到同級子域名
- ❌ https://example.com/.well-known/ai-plugin.json -> 重定向到 https://example2.com/.well-known/ai-plugin.json
- 不允許重定向到另一個域名
清單驗證
清單本身中的特定字段必須滿足以下要求:
- api.url - 提供給OpenAPI規範的URL必須托管在根域名的同一級或子域名上。
- legal_info - 提供的URL的二級域名必須與根域名的二級域名相同。
- contact_info - 電子郵件地址的二級域名應與根域名的二級域名相同。
解析API規範
清單中的api.url字段提供了一個鍊接到OpenAPI規範,該規範定義了插件可以調用的API。OpenAPI允許指定多個服務器基本URL。使用以下邏輯選擇服務器URL:
- 遍曆服務器URL列表
- 使用第一個與根域名完全匹配或是根域名的子域名的服務器URL
- 如果上述情況都不适用,則默認為托管API規範的域名。例如,如果規範托管在api.example.com上,則api.example.com将用作OpenAPI規範中的路由的基本URL。
注意:請避免為托管API規範和任何API端點使用重定向,因為不能保證始終會遵循重定向。
使用TLS和HTTPS
與插件的所有流量(例如,獲取ai-plugin.json文件、OpenAPI規範、API調用)必須在端口443上使用TLS 1.2或更高版本,并帶有有效的公共證書。
IP出口範圍
ChatGPT将從CIDR塊23.102.140.112/28的IP地址調用您的插件。您可能希望明确允許這些IP地址。
另外,OpenAI的網絡浏覽插件從另一個IP地址塊訪問網站:23.98.142.176/28。
评论