锅炉节能设备,诡故事第一季,草编的戒指伴奏
前端时间在公司的时候,要使用angular开发一个网站,因为angular很适合前后端分离,所以就做了一个简单的图书管理系统来模拟前后端分离。
但是在开发过程中遇见了同源策略的跨域问题,页面能够显示,但是却没有数据,显示如下
右键检查报错如下:
报错代码如下
failed to load http://127.0.0.1:8888/publisher/: no 'access-control-allow-origin' header is present on the requested resource. origin 'http://localhost:4200' is therefore not allowed access.
angular从后端获取数据的代码如下:
private publishersurl = 'http://127.0.0.1:8888/publisher/'; private addpuburl = 'http://127.0.0.1:8888/addpub/'; getpublishers (): observable<publisher[]> { return this.http.get<publisher[]>(this.publishersurl) .pipe( catcherror(this.handleerror<publisher[]>('getpublishers', [])) ); }
出现这个问题的原因是同源策略的跨域问题,关于这个问题不在此处详细讨论,如有兴趣可以去搜索一下。
解决这个问题关键在于后端,要允许其他网站进行访问,在这里我们可以定义一个中间件来解决这个问题,步骤如下。
1.在app下新建一个mymiddleware.py文件。
2.在文件中加入以下代码
from django.utils.deprecation import middlewaremixin class mycore(middlewaremixin): def process_response(self, request, response): response['access-control-allow-origin'] = "*" if request.method == "options": # 复杂请求 预检 response['access-control-allow-headers'] = "content-type" response['access-control-allow-methods'] = "post, delete, put" return response
3.去settings文件中注册中间件
middleware = [ 'bms.mymiddleware.mycore', ]
至此,这个问题就算解决了,我们可以将项目运行起来看一下结果
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论