LoginSignup
1
1

More than 5 years have passed since last update.

setRequestHeaderの挙動が変わったよ

Last updated at Posted at 2015-08-10

どこが変わった?

SDK 4.0.0まではxhr.setRequestHeader("X-Pointless-Header", "1234");を複数回実行してもリクエストヘッダは上書きされるだけでした。

var xhr = Ti.Network.createHTTPClient();
xhr.open("GET", "http://www.example.com/somewhere/over/the/rainbow");
xhr.setRequestHeader("X-Pointless-Header", "1234");
xhr.setRequestHeader("X-Pointless-Header", "5678");
xhr.setRequestHeader("X-Pointless-Header", "abcd");
xhr.send();

実際にこんなコードを書いたら有罪間違いなしですが、とにかく今までは同じキーのリクエストヘッダを指定した場合、元の値は上書きされて、サーバ側に届くリクエストは"HTTP_X_POINTRESS_HEADER"=>"abcd"でした。

ところが、4.1.0以降は上書きではなく追記されるようになったので"HTTP_X_POINTRESS_HEADER"=>"1234, 5678, abcd"という値が届くことになります。

普通、ここにはREST APIとやりとりするための認証用キーが入ったりするので、うっかり別の値を追記してしまうと大変まずいことになります。

Android版だけのバグかと思ったらiOSでも同じ動きだったので、きっと仕様が変わったのでしょう。互換性のない変更は必ず目立つ場所に掲示してもらいたいものですが、きっとアルファ・ケンタウリあたりに50年前から貼り出されていた1のでしょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1