6

Django docs (Django 1.3 を使用)で説明されているように、CSRF をセットアップしました。FFとSafariで動作しますが、IE9では取得します

<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>

私が見つけたAjaxリクエストのレスポンスヘッダーで

Set-Cookie  csrftoken=8db3637951243ffb591e6b2d6998ed03; expires=Fri, 14-Sep-2012 08:01:52 GMT; Max-Age=31449600; Path=/

通常のフォームで使用する場合 (つまり、Ajax を使用しない場合)、IE9 で動作します。

nginx/1.1.2 の背後で Django を使用しています。

私がここで見逃しているヒントはありますか?

4

3 に答える 3

3

私は同じ問題を抱えていました。私にとっての問題は、フォームのアクション属性を指定しなかったことです。IEは明らかにそれを許可していません。

于 2013-04-12T14:51:28.253 に答える
3

フォームが iframe 内にある場合、考えられる理由は、サードパーティの Cookie をブロックする IE のデフォルト ポリシーです。あなたは出来る

Django のチケット#17157は、この問題に関するメモをドキュメントに追加することを提案しています。

于 2011-11-03T07:15:55.547 に答える
1

Django のチケット#17157 (リンクを提供してくれた @akaihola に感謝) では、問題は Internet Explorer がデフォルトでサードパーティの Cookie をブロックすることであると述べられています。そのため、ブラウザの設定で、すべてのサイトまたは自分のサイトに対してのみサードパーティの Cookie を有効にすることができます。IE 7でそれを行う方法は次のとおりです(このリンクから):

  1. 「ツール」メニューをクリックします
  2. 「インターネットオプション」をクリック
  3. 「プライバシー」タブを選択します

オプション 1: すべてのサイトでサードパーティ Cookie を有効にするには

  1. 「詳細」をクリック
  2. 「自動 Cookie 処理をオーバーライドする」を選択します。
  3. 「サードパーティの Cookie」の下にある「受け入れる」ボタンを選択し、「OK」をクリックします。

また

オプション 2: Feedjit.com 専用のサードパーティ Cookie を有効にするには

  1. 「サイト」をクリック
  2. 「 your-domain.com 」を追加して「許可」をクリック
  3. 「OK」をクリック
  4. 「サードパーティの Cookie」の下にある「受け入れる」ボタンを選択し、「OK」をクリックします。
于 2015-02-24T12:01:12.703 に答える