概要 Djangoで標準のViewやDjango REST frameworkなどで作成したエンドポイントに対して、AngularJSのHttpProviderでpostすると、403エラーが返ってくる。 $http.post('/api/entries', {'title': '日記', 'body': '今日はいい天気です'}) 原因 これは、AngularJSを使っていることはあまり関係なく、DjangoのCSRF Protectionを上手く回避できていないのが原因。 CSRF Tokenを格納するRequest Headerの値が、AngularJSがデフォルトで使用する値と、Djangoが認識する値で違っているのに由来しているらしい。 以下のドキュメントを読むと、Djangoでは、Ajaxリクエストをするときに、csrftokenの値をX-CSRFTokenというヘッダ名で送信