Django CORS Handler为false,但不拒绝API请求



当我运行Django CORS框架时,没有任何东西被过滤掉。当我向处理程序插入打印语句时,该值被评估为false,但它不会过滤掉对视图端点的请求。我需要对视图进行任何更改吗?我是否错过了一些会使它拒绝不符合cors_allow_mysites标准的请求的东西?

handlers.py

from corsheaders.signals import check_request_enabled
def cors_allow_mysites(sender, request, **kwargs):
return ("Origin" in request.headers) and (request.headers["Origin"] == 'url.com')
check_request_enabled.connect(cors_allow_mysites)

apps.py

from django.apps import AppConfig
class ApiEndpointConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api_endpoint'
def ready(self):
# Makes sure all signal handlers are connected
from . import handlers  # noqa

__init__.py

default_app_config = "api_endpoint.apps.ApiEndpointConfig"

check_request_enabled信号的作用是确定是否将CORS标头(如"Access-Control-Allow-Origin")添加到响应中,它不会"过滤掉请求"。

当您的cors_allow_mysites函数返回True时,您应该期望看到"Access-Control-Allow-Origin"和响应中的其他CORS头,如果它返回False,您应该这样做。

关于请求是否被过滤,这完全取决于这些头是否需要。如果您在"http://example.com"上,并且您正在从"http://example.com"获取数据,则不需要CORS标头,因此没有标头,请求将顺利通过。只有跨域请求才需要这些头文件。

最新更新