HTTPS の URL で Unicode "非 ASCII" 文字を適切に表示する方法
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
症状
ほとんどの場合、HTTP 上の URL は適切に動作するが、HTTPS (over SSL) の場合にうまくいかない。通常はこれにより、HTTPS URL 内の Unicode (非 ASCII) 文字が URL で適切に表示されず、提供されたページで大量のエラーが表示されます。
原因
これは、Jira を実行している Apache Tomcat アプリケーションの conf/server.xml
の HTTPS コネクタの定義で useBodyEncodingForURI="true"
フラグが定義されていない場合に発生します。このフラグは、Jira の "推奨" ディストリビューションのインストールではデフォルトで設定されていますが、Jira の WAR セットアップの場合はこれが行われていない可能性があります。
ソリューション
Jira を実行している Apache Tomcat 環境の
conf/server.xml
ファイルの次の要素にuseBodyEncodingForURI="true"
フラグが含まれていることを確認します。これにより、エンコードがリクエストのエンコード方式 (UTF-8) に一致するように強制されます。<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxHttpHeaderSize="8192" SSLEnabled="true" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true"/>
あるいは、
URIEncoding="UTF-8"
フラグを設定できます。これはデフォルトの URL エンコード方式を UTF-8 に設定します。<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxHttpHeaderSize="8192" SSLEnabled="true" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"/>