2

以前に Chrome 拡張機能を開発したことはなく、現在、Django を利用したアプリ用の Chrome 拡張機能 (リンク送信機能付き) に取り組んでいます。拡張機能を使用してリンクを送信しようとすると、次のエラーが発生します。

'POST http://127.0.0.1:8000/add_link_from_extension 403 (FORBIDDEN)'

これは、postdata JSON で csrfmiddlewaretoken を渡すことで解決できますが、明らかに私にはできません

<script>var csrfmiddlewaretoken = "{{ csrf_token }}"</script>

Chrome拡張機能のhtmlファイルで。Django から Chrome 拡張機能の JavaScript に csrf_token をどのように渡しますか? または、この問題を回避する他の方法はありますか? Chrome 拡張機能の JS コードの関連部分は次のとおりです。

postdata = {
        "url":url.value
        //"csrfmiddlewaretoken": csrfmiddlewaretoken 
    };
$.post('http://' + "127.0.0.1:8000" + '/add_link_from_extension', postdata, success);
4

1 に答える 1

5

CSRF トークンを使用して Cookie の設定を試みることができます ( https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajaxを参照)。または、単にビューを で装飾しますcsrf_exempt

個人的には、どちらの方法も最適ではないと思います。本当に、ブラウザの拡張機能などを通じてサイトへの外部アクセスを許可する場合は、API を設定して使用する必要があります。特に、あらゆる種類の書き込みアクセスを許可する場合は、追加する必要があります。 OAuth のような認証レイヤー。django-tastypie試すことができる優れたドロップイン API ソリューションであり、すぐに使用できる OAuth をサポートしています。

于 2012-07-23T21:30:25.980 に答える