连接本地 django 后端 angular 7
Connect local django backend with angular 7
我在 Django
后端公开了 API。我想从 Angular 7
获得 API 请求。所以我实现了
的代码
this.HttpClient.get('Http://127.0.0.1:8000/myapp/posts')
.subscribe(
(data:any[]) => {
console.log(data)
}
)
但我收到一个错误
Access to XMLHttpRequest at 'http://127.0.0.1:8000/myapp/posts' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}message: "Http failure response for (unknown url): 0 Unknown Error"name: "HttpErrorResponse"ok: falsestatus: 0statusText: "Unknown Error"url: null__proto__: HttpResponseBase
任何人都可以提出解决此错误的任何解决方案吗?
从您的 front-end 应用程序发送 HTTP 请求时,使用浏览器的 fetch API、Axios 客户端或 jQuery $.ajax() 方法(a JavaScript XHR 接口的包装器),对于使用 Django REST 框架构建的 back-end API,Web 浏览器将抛出与同源策略相关的错误。
跨源资源共享或 CORS 允许客户端应用程序与托管在不同域上的 API 交互,方法是让现代 Web 浏览器绕过默认执行的同源策略。
在此处参考操作方法:https://www.techiediaries.com/django-cors/
你需要添加一个中间件文件app/cors.py:
class CorsMiddleware(object):
def process_response(self, req, resp):
response["Access-Control-Allow-Origin"] = "*"
return response
这将为每个 Django 请求添加一个 Access-Control-Allow-Origin:* header 但在此之前,您需要将其添加到中间件列表 类:
MIDDLEWARE_CLASSES = (
#...
'app.CorsMiddleware'
)
然后安装django-cors-headers
首先使用 pip 安装 django-cors-headers
pip 安装django-cors-headers
我在 Django
后端公开了 API。我想从 Angular 7
获得 API 请求。所以我实现了
this.HttpClient.get('Http://127.0.0.1:8000/myapp/posts')
.subscribe(
(data:any[]) => {
console.log(data)
}
)
但我收到一个错误
Access to XMLHttpRequest at 'http://127.0.0.1:8000/myapp/posts' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}message: "Http failure response for (unknown url): 0 Unknown Error"name: "HttpErrorResponse"ok: falsestatus: 0statusText: "Unknown Error"url: null__proto__: HttpResponseBase
任何人都可以提出解决此错误的任何解决方案吗?
从您的 front-end 应用程序发送 HTTP 请求时,使用浏览器的 fetch API、Axios 客户端或 jQuery $.ajax() 方法(a JavaScript XHR 接口的包装器),对于使用 Django REST 框架构建的 back-end API,Web 浏览器将抛出与同源策略相关的错误。
跨源资源共享或 CORS 允许客户端应用程序与托管在不同域上的 API 交互,方法是让现代 Web 浏览器绕过默认执行的同源策略。
在此处参考操作方法:https://www.techiediaries.com/django-cors/
你需要添加一个中间件文件app/cors.py:
class CorsMiddleware(object):
def process_response(self, req, resp):
response["Access-Control-Allow-Origin"] = "*"
return response
这将为每个 Django 请求添加一个 Access-Control-Allow-Origin:* header 但在此之前,您需要将其添加到中间件列表 类:
MIDDLEWARE_CLASSES = (
#...
'app.CorsMiddleware'
)
然后安装django-cors-headers
首先使用 pip 安装 django-cors-headers
pip 安装django-cors-headers