プロジェクト

全般

プロフィール

Enhancement(機能追加・改善) #3201

完了

activity/post.json の画像投稿機能をJavaScriptから非同期に呼び出せるようにするための修正

Youichi Kimura さんが約12年前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2012-09-14
期日:
進捗率:

0%

予定工数:

説明

Overview (概要)

JSON API の activity/post.json で画像を含むアクティビティの投稿を行う場合、XHR ではファイルのアップロードを行うことが出来ないため iframe 要素を動的に作成してそこで API を呼ぶ必要がある (e.g. jQuery.upload )。

この方法で API を呼び出す場合はレスポンスの Content-Type が application/json となっていると、iframe 読み込み時にブラウザによるダウンロードダイアログが表示されたり、iframe 要素から取得できる contentWindow.document (または contentDocument) の内容に(ブラウザの拡張機能等によって整形された)HTMLタグが混入したりすることがあるため不都合となる。

このため、activity/post.json (及び、今後追加される画像アップロード機能を含んだAPI) については強制的に Content-Type を text/html にするオプションが必要である。

Spec (仕様)

forceHtml パラメータを追加、forceHtml=1 の場合は Content-Type を text/html にする(レスポンス本文はそのまま)

Youichi Kimura さんが約12年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 4a8aa98144c10dfca183e1a6293ee7f7849b0621 で適用されました。

isao sano さんが7年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

対象バージョン変更により修正内容の確認が必要であるため差し戻します。

isao sano さんが7年以上前に更新

  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更

Youichi Kimura さんが7年以上前に更新

  • ステータスRejected(差し戻し) から Won't fix(対応せず) に変更
  • 進捗率50 から 0 に変更

言い出した当人ではありますが、レスポンスボディに JSON を出力する API で Content-Type: text/html を使用することは XSS を招く恐れがあるため、このような修正はすべきでないと考えます。

このチケットを作成した当時とはモダンブラウザにおける XHR の対応状況が変わっており、現在では FormData を使用した multipart/form-data のアップロードを用いることで解決が可能です。そのため、iframe を使用したアップロードを行う必要はありません。
http://caniuse.com/#feat=xhr2

XHR2 に対応していないブラウザで問題になるであろう IE9 は、2017/4/11 の Windows Vista サポート終了とともに OpenPNE におけるサポート対象から外れるため、今後はファイルアップロードを伴う API リクエストにおいても XHR が使用されることになるはずです。

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