Skip to content

Commit b76984d

Browse files
authored
Allow custom CSRF_HEADER_NAME setting. (#4415)
1 parent 966330a commit b76984d

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

rest_framework/renderers.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,12 @@ def get_context(self, data, accepted_media_type, renderer_context):
645645
else:
646646
paginator = None
647647

648+
csrf_cookie_name = settings.CSRF_COOKIE_NAME
649+
csrf_header_name = getattr(settings, 'CSRF_HEADER_NAME', 'HTTP_X_CSRFToken') # Fallback for Django 1.8
650+
if csrf_header_name.startswith('HTTP_'):
651+
csrf_header_name = csrf_header_name[5:]
652+
csrf_header_name = csrf_header_name.replace('_', '-')
653+
648654
context = {
649655
'content': self.get_content(renderer, data, accepted_media_type, renderer_context),
650656
'view': view,
@@ -675,7 +681,8 @@ def get_context(self, data, accepted_media_type, renderer_context):
675681
'display_edit_forms': bool(response.status_code != 403),
676682

677683
'api_settings': api_settings,
678-
'csrf_cookie_name': settings.CSRF_COOKIE_NAME,
684+
'csrf_cookie_name': csrf_cookie_name,
685+
'csrf_header_name': csrf_header_name
679686
}
680687
return context
681688

rest_framework/static/rest_framework/js/csrf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ $.ajaxSetup({
4646
// Send the token to same-origin, relative URLs only.
4747
// Send the token only if the method warrants CSRF protection
4848
// Using the CSRFToken value acquired earlier
49-
xhr.setRequestHeader("X-CSRFToken", csrftoken);
49+
xhr.setRequestHeader(window.drf.csrfHeaderName, csrftoken);
5050
}
5151
}
5252
});

rest_framework/templates/rest_framework/admin.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ <h4 class="modal-title" id="myModalLabel">{{ error_title }}</h4>
232232
{% block script %}
233233
<script>
234234
window.drf = {
235+
csrfHeaderName: "{{ csrf_header_name|default:'X-CSRFToken' }}"
235236
csrfCookieName: "{{ csrf_cookie_name|default:'csrftoken' }}"
236237
};
237238
</script>

rest_framework/templates/rest_framework/base.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ <h1>{{ name }}</h1>
263263
{% block script %}
264264
<script>
265265
window.drf = {
266+
csrfHeaderName: "{{ csrf_header_name|default:'X-CSRFToken' }}"
266267
csrfCookieName: "{{ csrf_cookie_name|default:'csrftoken' }}"
267268
};
268269
</script>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy