Project

General

Profile

Actions

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

closed

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

Added by Youichi Kimura over 12 years ago. Updated almost 8 years ago.

Status:
Won't fix(対応せず)
Priority:
Normal(通常)
Target version:
Start date:
2012-09-14
Due date:
% Done:

0%

Estimated time:

Description

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 にする(レスポンス本文はそのまま)

Actions #1

Updated by Youichi Kimura over 12 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

Actions #2

Updated by isao sano almost 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

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

Actions #3

Updated by isao sano almost 8 years ago

  • Target version changed from OpenPNE 3.9.0-old to OpenPNE 3.9.0
Actions #4

Updated by Youichi Kimura almost 8 years ago

  • Status changed from Rejected(差し戻し) to Won't fix(対応せず)
  • % Done changed from 50 to 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 が使用されることになるはずです。

Actions

Also available in: Atom PDF