プロジェクト

全般

プロフィール

機能 #177

未完了

task2.call2arm.com CORS エラー修正 - Access-Control-Allow-Origin重複問題

Redmine Admin さんが10日前に追加. 4日前に更新.

ステータス:
解決
優先度:
急いで
担当者:
-
開始日:
2025-06-04
期日:
進捗率:

0%

予定工数:

説明

問題概要

task2.call2arm.com から task.call2arm.com へのAPIアクセスでCORSエラーが発生

現象

  • ブラウザコンソールエラー: "The 'Access-Control-Allow-Origin' header contains multiple values 'https://task2.call2arm.com, https://task2.call2arm.com', but only one is allowed."
  • 全てのRedmine API呼び出しが失敗(projects.json, issues.json, users/current.json等)

原因分析

task.call2arm.com のNginx設定でAccess-Control-Allow-Originヘッダーが重複設定されている可能性

修正作業

  1. task.call2arm.com nginx設定確認
  2. CORS設定重複箇所の特定・修正
  3. Docker/nginxコンテナ再起動
  4. 動作確認

影響範囲

  • task2.call2arm.com の全機能(ダッシュボード、チケット、プロジェクト等)
  • Redmine UI統合機能

Redmine Admin さんが10日前に更新

調査進捗報告

発見事項

  1. task.call2arm.com APIサーバーが停止中: HTTP 502エラー発生
  2. 現在動作中のサービス: facty-web, facty-api のみ
  3. CORSヘッダー: 単体では正常(重複なし)

CORS設定確認結果

curl -H "Origin: https://task2.call2arm.com" -I https://task.call2arm.com/api/projects.json
# 結果: access-control-allow-origin: https://task2.call2arm.com(重複なし)

問題の根本原因

  • CORSエラーの原因: task.call2arm.com のAPIサーバー(ポート3005)が停止している
  • 502 Bad Gateway でも nginx が CORS ヘッダーを重複設定している

次のアクション

  1. task.call2arm.com のサービス設定ディレクトリを特定
  2. Docker Compose でサービス起動
  3. nginx設定からCORS重複設定を削除

Redmine Admin さんが4日前に更新

🔍 現象確認完了 - 問題特定

現状分析結果

実際の問題: CORS重複ではなく、API routing設定の不備

確認された現象

  1. 404エラー多発: task2.call2arm.com/api/* → 404 Not Found
  2. 不正なAPI呼び出し: task2.call2arm.com が自身の /api/ を呼び出し中
  3. Redmine API未接続: dev.call2arm.com への適切なプロキシ設定なし

技術的詳細

  • nginxプロキシ: task2-api:3002/api/ → 正常動作
  • task2-api Routes: RAG専用エンドポイントのみ(/api/embeddings, /api/documents など)
  • 欠落機能: Redmine API プロキシ(issues.json, projects.json など)

🎯 必要な修正作業

  1. task2-api: Redmine APIプロキシ機能追加

    • /api/issues.jsondev.call2arm.com/issues.json
    • /api/projects.jsondev.call2arm.com/projects.json
    • /api/users/current.jsondev.call2arm.com/users/current.json
  2. 環境変数設定:

    • REDMINE_URL=https://dev.call2arm.com
    • API Key設定確認
  3. CORS設定: dev.call2arm.com 側の設定確認

影響範囲

  • task2.call2arm.com の全Redmine UI機能
  • ダッシュボード、チケット、プロジェクト管理

次のアクション: task2-api にRedmine APIプロキシルーター追加実装

Redmine Admin さんが4日前に更新

🔧 修正作業実施 - nginx プロキシ設定追加

実施内容

  1. Redmine APIプロキシ機能追加: nginx設定にdev.call2arm.com向けのプロキシルール追加
  2. 正規表現パターン設定: /api/(issues|projects|users|trackers|issue_statuses|enumerations)\.json$
  3. CORS設定適用: クロスオリジンアクセス許可
  4. API Key自動付与: key=feb66d81a5f4ff9c585ce30fce2ac06e0554aec6 自動追加

技術詳細

location ~ ^/api/(issues|projects|users|trackers|issue_statuses|enumerations)\.json$ {
    proxy_pass https://dev.call2arm.com$request_uri;
    proxy_set_header Host dev.call2arm.com;
    set $args "${args}&key=feb66d81a5f4ff9c585ce30fce2ac06e0554aec6";
    
    # CORS headers for Redmine API
    add_header "Access-Control-Allow-Origin" "*" always;
    add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS" always;
    add_header "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Redmine-API-Key" always;
}

確認結果

  • dev.call2arm.com API: 正常動作確認済み(直接アクセステスト成功)
  • nginx設定: 構文チェック OK
  • コンテナ再起動: 完了

🎯 次のアクション

nginx設定の優先順位調整が必要。現在はフォールバック /api/ ルールが先に適用されている可能性。

推奨対応: location ブロックの順序変更またはより具体的なパターンマッチング実装

Redmine Admin さんが4日前に更新

  • ステータス新規 から 進行中 に変更

🔄 進行中 - nginx設定調整継続

実施済み内容

  1. nginx設定修正: 複数のアプローチで Redmine API プロキシ設定追加
  2. location優先度調整: 具体的パスを正規表現より優先
  3. SSL設定追加: proxy_ssl_verify off 追加
  4. CORS設定完了: クロスオリジンアクセス許可設定

現在の状況

  • nginx構文: 正常
  • コンテナ再起動: 完了
  • 問題: まだ task2-api にルーティングされている

🔍 技術的分析

nginx location マッチング優先度の問題が継続。以下の要因が考えられる:

  1. Docker ネットワーク内の名前解決問題
  2. nginx 設定キャッシュ
  3. load balancer レベルでの振り分け

📋 次期アクション候補

  1. 直接API統合: task2-api内にRedmineプロキシ機能実装
  2. nginx設定詳細調査: アクセスログ・エラーログ分析
  3. 代替ルーティング: 異なるパスでのRedmine API提供

進捗: nginx設定は機能するが、最終ルーティングで課題継続中

Redmine Admin さんが4日前に更新

✅ 解決完了 - task2-api内Redmineプロキシ実装

🎉 修正内容

  1. app.js更新: redmineルーター統合、CORS設定強化
  2. redmineルーター実装: 完全なRedmine APIプロキシ機能
  3. エラーハンドリング: 包括的エラー処理とログ出力
  4. SSL設定: httpsAgent追加でdev.call2arm.com接続安定化

📊 動作確認結果

API動作確認

  • /api/issues.json: 正常レスポンス
  • /api/projects.json: 正常レスポンス
  • /api/redmine/health: 接続確認OK
  • ✅ CORS設定: クロスオリジンアクセス正常

UI動作確認

  • ダッシュボード: 実データ表示(新規73件、進行中13件等)
  • プロジェクト選択: 6プロジェクト正常表示
  • ネットワークリクエスト: 全API呼び出し200応答

🔧 技術的解決策

選択したアプローチ: task2-api内統合

  • 利点: 単一APIエンドポイント、RAG統合準備完了
  • 実装: Express routerによるプロキシ、axios HTTPSエージェント
  • 設定: dev.call2arm.com向け、APIキー自動付与

🎯 RAG統合への準備

現在の実装により以下が可能に:

  1. Redmineデータ: ベクトル化対象として利用可能
  2. 統合API: RAG機能とRedmine APIの統一提供
  3. Claude連携: Redmineコンテキストを活用したAI応答

結論: CORS/API routing問題完全解決。task2.call2arm.comでRedmine機能正常動作確認済み。

Redmine Admin さんが4日前に更新

  • ステータス進行中 から 解決 に変更

チケット#177 CORS問題解決完了。task2-api内Redmineプロキシ実装により、task2.call2arm.comでのRedmine API呼び出し正常動作確認済み。

他の形式にエクスポート: Atom PDF