読者です 読者をやめる 読者になる 読者になる

style="display:none"にするとauはフォームの値を送信しない

Django Mobile

タイトルのとおりなんだけれども、

<form method="post" action=".">
<div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="xxxxx" /></div>
<input id="id_name" type="text" name="name" value="" maxlength="15" /><br />
<input type="submit" value="Submit" />
</form>

のようなHTMLを書くと、auのブラウザはcsrfmiddlewaretokenというフィールドの値を送信しないようだ。少なくともW52CAで確認。これはちょっとハマッた。

type="hidden"のinput要素をdisplay:noneのブロックで囲むなんてあんまりしないかなぁと思うが、Django 1.2 alpha 1では、

{% csrf_token %}

のようなタグでCSRF対策用のトークンを埋め込むと、

<div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="xxxxx" /></div>

のようなHTMLが出力される。

Djangoの新しいのCSRF対策機構はできるだけそのまま使いたいが、さて、どう対処するか・・・