0

私は主にウェブサイトアプリにdjangoを使用しています。リクエストを処理するためにキャンバスページを作成する必要があります。最も単純な形式では、次のようになります。

(r'^canvas/','commitments.views.canvas'),

urls.pyおよび:

@csrf_exempt
def canvas(request): 
    return HttpResponse("Hello world")

views.py。ページを直接ロードすると、これはすべて正常に機能します。ただし、Facebookキャンバスからページをロードすると、modsecurityに関連するエラーが発生しますModSecurity: Output filter: Failed to read bucket (rc 104): Connection reset by peer [hostname "..."] [uri "/canvas/"]

私がここで間違っていることについて何か考えはありますか?助けてくれてありがとう。

4

2 に答える 2

0

今のところ、mod_security(Dreamhostのパネルの「追加のWebセキュリティ」)をオフにすることで対処できました。

最初に、次の.htaccess命令を使用して対処しようとしましたが、うまくいかなかったようです。

SetEnvIfNoCase Request_URI ^/canvas/.*$ MODSEC_ENABLE=Off
<IfModule mod_security.c>
  SecFilterSelective REQUEST_URI "^/canvas/.*$" "allow,pass"
  SecFilterScanPOST Off
</IfModule>

キャンバスURIを許可する場合を除いて、mod_securityを再度有効にできるようにしたいと思います。そのため、誰かがその解決策を持っている場合は、感謝します。ありがとう!

于 2011-12-31T15:32:04.340 に答える
0

(ここからのx-post :解決策は同じかもしれません)

だから私はこれを理解しようとあまりにも多くの時間を費やしてきました。私は(少しくだらない)回避策に落ち着きました:{% csrf_token %}あなたのテンプレートの任意の場所に追加します(私はあなたがcontext_instance=RequestContext(request)あなたか何かに引数を渡したと仮定していますrender_to_response)。

何が起こっているのかというと、Cookieが実際に設定されていないことだと思います(これは、ブラウザの開発ツールでCookieを調べることで確認できます)。上記のコードをテンプレートに追加すると、これが強制されます。これはDjangoの新しいバージョンで修正される可能性があると感じており、1.4以降には明らかな修正があるようです(たとえば、ここを参照)。残念ながら、dreamhostは1.2.3を使用しているため、実行する必要があります。

于 2012-04-02T04:29:50.910 に答える