2015-01-20 6 views
10

Django-CORS-हेडर काम नहींDjango-CORS-हेडर काम नहीं

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.gis', 
    'corsheaders', 
    'rest_framework', 
    'world', 
    'userManager', 
    'markPost', 
    'BasicServices', 
) 


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_CREDENTIALS = True 

सब कुछ सामान्य है, लेकिन

यहाँ

मेरी प्रतिक्रिया हेडर

Cache-Control: max-age=0 
Content-Type: text/html; charset=utf-8 
Date: Tue, 20 Jan 2015 13:16:17 GMT 
Expires: Tue, 20 Jan 2015 13:16:17 GMT 
Last-Modified: Tue, 20 Jan 2015 13:16:17 GMT 
Server: WSGIServer/0.1 Python/2.7.8 
Set-Cookie: csrftoken=snXksqpljbCLW0eZ0EElFxKbiUkYIvK0; expires=Tue, 19-Jan-2016 13:16:17 GMT; Max-Age=31449600; Path=/ 
Vary: Cookie 
X-Frame-Options: SAMEORIGIN 
+0

आप कैसे कहते हैं कि कोर हेडर काम नहीं कर रहे हैं? क्या आप मुझे समझा सकते हैं? – Tommy

+0

सीओआरएस मिडलवेयर की तुलना में कुछ 500 त्रुटियां पहले होती हैं, इसलिए इसमें सीओआरएस हेडर जोड़ने का कोई मौका नहीं है। यदि प्रतिक्रिया स्थिति कोड 500 था, तो यह समस्या हो सकती है और सीओआरएस ठीक काम कर रहा है। –

उत्तर

6

काम नहीं किया के अनुसार CorsMiddleware से प्रक्रिया_response कोड:

response[ACCESS_CONTROL_ALLOW_ORIGIN] = "*" if (
      settings.CORS_ORIGIN_ALLOW_ALL and 
      not settings.CORS_ALLOW_CREDENTIALS) else origin 

आप इस तरह सेटिंग्स सेट करना होगा:

# CORS Config 
CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_CREDENTIALS = False 
+0

# अद्भुत #django #sersverspeak –

4

मैं corsheaders लगता है और क्लिकजैकिंग middlewares संगत नहीं हैं। जब मैंने django.middleware.clickjacking.XFrameOptionsMiddleware पर टिप्पणी की तो कम से कम मैंने एक्स-फ़्रेम-विकल्प शीर्षलेख से छुटकारा पा लिया।

मेरे पास सिर्फ CORS_ORIGIN_ALLOW_ALL = True सेटिंग है।

2

यदि आप इसका परीक्षण कर रहे हैं तो आपको यह सुनिश्चित करने की आवश्यकता है कि आप अनुरोध में कम से कम मूल शीर्षलेख शामिल करें।

उदाहरण के लिए:

$ http GET http://127.0.0.1:8000/todos/ Origin:http://www.someorigin.com 
HTTP/1.0 200 OK 
Access-Control-Allow-Origin: * 
Allow: GET, POST, HEAD, OPTIONS 
Content-Type: application/json 
Date: Sat, 14 Nov 2015 04:42:38 GMT 
Server: WSGIServer/0.1 Python/2.7.10 
Vary: Accept, Cookie 
X-Frame-Options: SAMEORIGIN 

आप एक preflight CORS अनुरोध के साथ अधिक प्रतिक्रिया मिल जाएगा:

$ http OPTIONS http://127.0.0.1:8000/todos/ Origin:http://www.someorigin.com 
HTTP/1.0 200 OK 
Access-Control-Allow-Headers: x-requested-with, content-type, accept, origin, authorization, x-csrftoken, user-agent, accept-encoding 
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS 
Access-Control-Allow-Origin: * 
Access-Control-Max-Age: 86400 
Allow: GET, POST, HEAD, OPTIONS 
Content-Type: application/json 
Date: Sat, 14 Nov 2015 04:45:37 GMT 
Server: WSGIServer/0.1 Python/2.7.10 
Vary: Accept, Cookie 
X-Frame-Options: SAMEORIGIN 
0

मत भूलना

'corsheaders.middleware.CorsMiddleware' जोड़ने के लिए,

MIDDLEWARS चर के शीर्ष पर:

CorsMiddleware किसी भी मिडलवेयर कि इस तरह Django के CommonMiddleware या whitenoise के WhiteNoiseMiddleware के रूप में प्रतिक्रियाओं उत्पन्न कर सकते हैं संभव के रूप में उच्च रखा जाना चाहिए, विशेष रूप से से पहले:

डॉक्स देखें। यदि यह पहले नहीं है, तो यह प्रतिक्रियाओं में CORS शीर्षलेख जोड़ने में सक्षम नहीं होगा।

संबंधित मुद्दे