Làm cách nào để kích hoạt CORS trên khung công tác REST Django của tôi? các reference không giúp đỡ nhiều, nó nói rằng tôi có thể làm bởi một middleware, nhưng làm thế nào tôi có thể làm điều đó?Làm thế nào tôi có thể kích hoạt CORS trên khung làm việc REST Django
Trả lời
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.
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
)
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 đề
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
- 1. Làm thế nào tôi có thể vô hiệu hóa xác thực trong khung REST Django
- 2. Khung Django Rest với ChoiceField
- 3. Làm thế nào tôi có thể truy cập giá trị QueryString trong Serializer Django Rest Framework
- 4. Làm thế nào để kích hoạt khung nền của Bootstrap?
- 5. Làm thế nào tôi có thể kích hoạt phần mở rộng unaccent trên một mô hình đã tồn tại
- 6. Django: làm thế nào để kích hoạt việc tạo ra ContentTypes cho các mô hình mới?
- 7. Làm thế nào tôi có thể lấy tên bảng trong một hàm kích hoạt PostgreSQL?
- 8. Làm thế nào tôi có thể thấy ai đã kích hoạt một hành động trong Delphi?
- 9. Cách làm việc với django-rest-framework trong các mẫu
- 10. Khung làm việc REST Django: Cách thêm tiền tố vào URL để phiên bản
- 11. django-rest-swagger: Làm cách nào tôi có thể chỉ định loại tham số trong docstring
- 12. Làm thế nào để sử dụng Graphene GraphQL khuôn khổ với Django REST Khung xác thực
- 13. Làm thế nào tôi có thể kích hoạt breakpoint trong Eclipse/CDT
- 14. Django Rest Framework - Làm thế nào để kiểm tra ViewSet?
- 15. Làm thế nào tôi có thể kích hoạt hook beforeCreate khi bulkCreating trong Sequelize?
- 16. Xác thực tùy chỉnh khung Django Rest
- 17. Làm thế nào về việc có một SingletonModel ở Django?
- 18. Trong Magento 1.9.0.0 làm thế nào tôi có thể kích hoạt đường dẫn mẫu Gợi ý?
- 19. Làm thế nào để kích hoạt xdebug trên HHVM 3.3.0?
- 20. Làm thế nào để tùy chỉnh activate_url trên django-allauth?
- 21. Khung làm việc Django REST cách chỉ định mã lỗi khi tăng lỗi xác thực trong bộ nối tiếp
- 22. Làm thế nào để kích hoạt VsVim?
- 23. Làm cách nào để kích hoạt DATETIME_FORMAT của Django?
- 24. Kích hoạt công việc tạo tia lửa với REST
- 25. Làm thế nào tôi có thể ngăn Emacs thay đổi kích thước cửa sổ của tôi?
- 26. Làm thế nào để kích hoạt backspace trên một textfield?
- 27. Django-Rest-Khung AssertionError HttpResponse Dự kiến
- 28. Làm thế nào tôi có thể có Response.Redirect() làm việc từ MasterPage?
- 29. Làm thế nào tôi có thể làm cho deleteRowsAtIndexPaths: làm việc với GenericTableViewController?
- 30. Làm thế nào tôi có thể nhận được các đối tượng phụ huynh trong django còn lại khung serializer
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à –
@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
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) –