

Docker公式のRedmineイメージからコンテナを起動。  
Vuejsで自作したフロントエンドからRedmineにRest APIをキック。  
結果、以下のCORSエラーが発生した。  
これを解消したい。  
GitHubからredmine_corsというプラグインをダウンロードし、Web画面から許可するドメインの設定をしても解決せず。  
参考文系が少なく原因不明。

エラー内容：

[code]

    Access to XMLHttpRequest at 'http://localhost:3000/projects/sample/issues.json?query_id=8' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
    
[/code]

Redmineへリクエストするヘッダ：

[code]

    'Content-Type': 'application/json'
    'Access-Control-Allow-Origin': '*'
    'X-Redmine-API-Key': 'アクセスキー'
    
[/code]

以下Docker ComposeのYMLファイル。

[code]

    version: '3.8'
    services:
      redmine:
        build:
          context: .
          dockerfile: Dockerfile.dockerfile
        container_name: redmine
        ports:
          - 3000:3000
        environment:
          REDMINE_DB_MYSQL: redmine-db
          REDMINE_DB_PASSWORD: redmine
          command: /bin/bash
        depends_on:
          - redmine-db
        restart: always
        
      redmine-db:
        image: mariadb
        container_name: redmine-db
        ports:
          - 3306:3306
        environment:
          MYSQL_ROOT_PASSWORD: redmine
          MYSQL_DATABASE: redmine
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
        restart: always
    
[/code]

Dockerファイル。  
CORS対策にGitHubからプラグインをダウンロード。  
所定のディレクトリに入れるとエラーに参考にしているサイトのRedmineのバージョンに合わせてバージョンをlatestから下げてみた。  
あとsedコマンドはmatchをgetに変えるべきとあったのでいれている。

[code]

    FROM redmine:3.0.6
    
    # CORS
    RUN apt-get update -y
    RUN apt-get install git -y
    RUN cd /usr/src/redmine/plugins/ && git clone https://github.com/mavimo/redmine_cors.git -b v0.0.1
    RUN sed -i -e 's/match/get/g' /usr/src/redmine/plugins/redmine_cors/config/routes.rb
    
[/code]

[Docker公式のRedmineイメージ](https://hub.docker.com/layers/library/redmine/latest/images/sha256-14f3946b87f52be9e29b9b9937ff3cd1bcc43293dcd06937c6526564786144b2?context=explore)


CC BY-SA 4.0
2022-10-23T16:49:54.057
91773
2022-10-25T01:18:20.273
2022-10-24T09:56:57.900
53585
53585
question
redmine cors
Docker公式のRedmineでCORSをクリアしてRest APIをリクエストする方法


自己解決しました。使用するライブラリを「[rack-cors](https://github.com/cyu/rack-
cors)」に変更した結果上手くいきました。

質問で使用したライブラリは「[redmine_cors](https://github.com/mavimo/redmine_cors/tree/develop)」というものでしたが、恐らくは対応するバージョンがあっていなかったのだと思います。最終更新日が７年前でした。

手順としては以下の通りです。

  1. Gemfileの編集
  2. CORS対策用ファイルを作成
  3. Dockerコンテナを再起動

ちなみにこのライブラリについては以下の記事に記述されていました。

[UbuntuにRedmine
4.2/5.0をインストールする](https://pvision.jp/tech/2021/12/redmine-4-2-installation-to-
ubuntu/#CORS)


CC BY-SA 4.0
2022-10-24T14:46:34.907
91797
2022-10-25T01:18:20.273
2022-10-25T01:18:20.273
3060
53585
91773
answer