要解决Angular应用向Django REST API发出的API请求由于CORS而被阻止的问题,可以采取以下步骤:
Django中安装并配置django-cors-headers库:
pip install django-cors-headers
命令安装库。settings.py
文件中添加corsheaders
到INSTALLED_APPS
列表中。settings.py
文件的底部添加以下配置:CORS_ALLOWED_ORIGINS = [
'http://localhost:4200', # Angular应用的URL
]
CORS_ALLOW_METHODS = [
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
]
settings.py
文件的底部添加以下中间件配置:MIDDLEWARE = [
# 其他中间件
'corsheaders.middleware.CorsMiddleware',
# 其他中间件
]
Angular中使用HttpClient发送请求时设置请求头:
HttpClientModule
导入HttpClientModule
模块:import { HttpClientModule } from '@angular/common/http';
HttpClientModule
到imports
数组中:imports: [
// 其他模块
HttpClientModule,
// 其他模块
]
import { HttpClient, HttpHeaders } from '@angular/common/http';
// ...
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'http://localhost:8000' // Django API的URL
})
};
this.http.get('http://localhost:8000/api/endpoint', httpOptions)
.subscribe((data) => {
// 处理响应数据
}, (error) => {
// 处理错误
});
这样配置后,Angular应用向Django REST API发出的API请求应该不会再受到CORS限制而被阻止。请根据实际情况修改URL、HTTP方法和请求头的配置。