django has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
时间: 2023-11-08 19:02:55 浏览: 144
django-cors-headers-3.0.2.tar.gz
这个问题是由于跨域资源共享(CORS)策略导致的。CORS是一种用于控制浏览器在不同域之间进行跨域访问的安全策略。当你的前端代码(如JavaScript)在一个域名下请求另一个域名的资源时,浏览器会执行一个预检请求(OPTIONS请求),以检查服务器是否允许跨域访问。如果服务器没有正确配置相关响应头,包括 'Access-Control-Allow-Origin',浏览器会拒绝加载资源并抛出这个错误。
要解决这个问题,你可以在Django中进行配置。你可以通过安装django-cors-headers包来简化这个过程。首先,安装包:
```bash
pip install django-cors-headers
```
然后,在你的Django项目的设置文件中,将 'corsheaders' 添加到 `INSTALLED_APPS` 和 `MIDDLEWARE` 中:
```python
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
# ...
]
```
接下来,在设置文件底部添加以下配置:
```python
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
```
这将允许来自任何域的请求,并且包括凭据(如Cookies)。
如果你只想允许特定的域访问你的资源,可以将 `CORS_ORIGIN_ALLOW_ALL` 设置为 `False`,并在 `CORS_ORIGIN_WHITELIST` 中指定允许的域名。
阅读全文