Angular在执行API的数据请求服务时重新加载页面。仅在生产中 问题
我有一个angular应用程序,它在开发服务器上运行得非常好。应用程序使用localStorage(我知道这不是最好的)来存储用户的JWT令牌 当我将应用程序投入生产时,由于某种原因,在执行服务时,页面会重新加载,因此我会丢失localStorage以及用户的JWT令牌 环境 Apache服务器+Debian 9(仅在生产中)Angular在执行API的数据请求服务时重新加载页面。仅在生产中 问题,angular,typescript,apache,deployment,angular-local-storage,Angular,Typescript,Apache,Deployment,Angular Local Storage,我有一个angular应用程序,它在开发服务器上运行得非常好。应用程序使用localStorage(我知道这不是最好的)来存储用户的JWT令牌 当我将应用程序投入生产时,由于某种原因,在执行服务时,页面会重新加载,因此我会丢失localStorage以及用户的JWT令牌 环境 Apache服务器+Debian 9(仅在生产中) 角度CLI:8.1.1 节点:12.5.0 操作系统:win32 x64 角度:8.1.1 一些代码 我已成功隔离了问题,并检测到是以下代码导致了这种情况: 触发API服
角度CLI:8.1.1
节点:12.5.0
操作系统:win32 x64
角度:8.1.1
一些代码 我已成功隔离了问题,并检测到是以下代码导致了这种情况: 触发API服务的函数:
getPosts() {
this.loading = true;
this.mdpostsService.getFirsyMDPosts()
.subscribe(data => {
this.mdPosts = data['results'];
this.mdPostsNextPage = data['next'];
this.loading = false;
});
}
获取数据的服务的代码:
getFirsyMDPosts() {
return this.http.get(`${environment.apiUrl}/mdposts/`)
.pipe(map(r => {
return r;
}));
}
为了隔离问题,我创建了一个触发该功能的按钮:
<button class="btn btn-danger" (click)="getPosts()">Ges Posts</button>
Ges帖子
我终于找到了解决方案!在做了几个小时的测试并查看了主机之后,我发现问题在于WSGI Django的授权
解决方案很简单,请启用。只需在Apache虚拟主机配置中添加以下行:
WSGIPassAuthorization On
这段代码本身不会触发重新加载。这个问题肯定有更多的原因。按钮是否位于表单中?实际上,重新加载不应清除本地存储上的密钥,这可能来自其他地方。我认为这是API的问题,您正在尝试调用一个不存在或未被参数接受的函数-类似于您的问题让我使用带有API的.NET Core疯狂,我发送的参数未经验证-并且您无法控制异常抱歉,我已经在其他项目上工作了几天。当我使用django开发服务器和angular开发服务器时,一切都可以完美地工作,不会抛出任何异常或强制重新加载。现在,我正试图将部署在我的生产服务器上的API与angular development服务器一起使用,以排除API问题。事实上,问题似乎来自API。使用angular development server并在生产服务器上部署Django api时,问题就出现了。