Zope:Script(Python)内で RESPONSE.setHeader() が効かない
 2007.11.10

ajaxからのリクエストに対して JSON 形式のデータを返す Python-Scriptを作りました. そのスクリプト内で RESPONSE.setHeader(‘Content-Type’, ‘….’) を使ってもその内容が無効になってしまい,実際のレスポンスヘッダ(response header)に反映されません. Zope-2.8.8 の以下のソースコードの中を探してみたのですが原因がわかりませんでした. Product/PythonScript/Script.py Shared/DC/Scripts/{Scripts.py,Bindings.pyBindingsUI.py} ZPublisher の中で何かしているんでしょうか. 仕方が無いので以下のadhocな手法で回避しました.元のScript(Pytnon)のオブジェクト名は foo_script とします. 1. foo_script -> do_foo_script と rename 2. 以下の内容の DTMLMethod を foo_script の名前で作成.
<dtml-call "RESPONSE.setHeader('Content-Type',  #本当は1行
          'text/plain; charset=utf-8')">
<dtml-var "do_foo_script()">
DTMLMethodで dtml-call で記述した RESPONSE.setHeader は効果有りなんです,なぜでしょう??
カテゴリー:python&zope