2016-03-03 12 views

Trả lời

25

Các liên kết mà bạn nhắc đến trong câu hỏi của bạn khuyến cáo sử dụng django-cors-headers, mà documentation nói để cài đặt các thư viện

pip install django-cors-headers 

và sau đó thêm nó vào các ứng dụng được cài đặt của bạn:

INSTALLED_APPS = (
    ... 
    'corsheaders', 
    ... 
) 

Bạn cũng sẽ cần phải thêm lớp trung gian để lắng nghe các câu trả lời:

MIDDLEWARE_CLASSES = (
    ... 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    ... 
) 

Bạn cũng có thể muốn duyệt the configuration section tài liệu của tài liệu.

+0

làm bạn biết bất kỳ cách nào khác để làm điều đó, mà không cần phải cài đặt một phụ thuộc mới? Tôi đang cố gắng tạo một lớp trung gian bây giờ là –

+1

@JulioMarins, tại sao bạn sẽ viết phiên bản của riêng mình khi có sẵn và dễ dàng cài đặt, với 12 bản phát hành, 21 người đóng góp, hơn 800 sao và hơn 100 dĩa? – Chris

+0

Bạn có một điểm thực sự, nhưng vì nhu cầu duy nhất cho một CORS đơn giản là một tiêu đề 'Access-Control-Allow-Origin: *' Tôi không thấy tại sao tải toàn bộ điều, tôi sẽ đặt một cách khác để làm điều này trong câu trả lời của bạn để cả hai phương pháp có thể có sẵn. tham chiếu: [link (] http: // enable-cors.org/server.html) –

5

Bạn có thể thực hiện bằng cách sử dụng phần mềm trung gian tùy chỉnh, mặc dù biết rằng tùy chọn tốt nhất đang sử dụng phương pháp thử nghiệm của gói django-cors-headers. Với những gì đã nói, đây là giải pháp:

tạo cấu trúc sau đây và các tập tin:

- myapp/middleware/__init__.py

from corsMiddleware import corsMiddleware 

- myapp/middleware/corsMiddleware.py

class corsMiddleware(object): 
    def process_response(self, req, resp): 
     resp["Access-Control-Allow-Origin"] = "*" 
     return resp 

thêm vào settings.py dòng được đánh dấu:

MIDDLEWARE_CLASSES = (
    "django.contrib.sessions.middleware.SessionMiddleware", 
    "django.middleware.common.CommonMiddleware", 
    "django.middleware.csrf.CsrfViewMiddleware", 

    # Now we add here our custom middleware 
    'app_name.middleware.corsMiddleware' <---- this line 
) 
1
pip install django-cors-headers 

và sau đó thêm nó vào các ứng dụng được cài đặt của bạn:

INSTALLED_APPS = (
    ... 
    'corsheaders', 
    ... 
) 

Bạn cũng sẽ cần phải thêm một lớp trung gian để lắng nghe ở trên phản ứng:

MIDDLEWARE_CLASSES = (
    ... 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    ... 
) 

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_CREDENTIALS = True 
CORS_ORIGIN_WHITELIST = (
    'localhost:3030', 
) 
CORS_ORIGIN_REGEX_WHITELIST = (
    'localhost:3030', 
) 

biết thêm chi tiết : https://github.com/ottoyiu/django-cors-headers/#configuration

đọc tài liệu chính thức có thể giải quyết hầu hết các vấn đề

3

Trong trường hợp bất cứ ai là nhận được trở lại câu hỏi này và quyết định viết middleware riêng của họ, đây là một mẫu mã cho middleware phong cách mới của Django -

class CORSMiddleware(object): 
    def __init__(self, get_response): 
     self.get_response = get_response 

    def __call__(self, request): 
     response = self.get_response(request) 
     response["Access-Control-Allow-Origin"] = "*" 

     return response 
Các vấn đề liên quan