Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular在执行API的数据请求服务时重新加载页面。仅在生产中 问题_Angular_Typescript_Apache_Deployment_Angular Local Storage - Fatal编程技术网

Angular在执行API的数据请求服务时重新加载页面。仅在生产中 问题

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服

我有一个angular应用程序,它在开发服务器上运行得非常好。应用程序使用localStorage(我知道这不是最好的)来存储用户的JWT令牌

当我将应用程序投入生产时,由于某种原因,在执行服务时,页面会重新加载,因此我会丢失localStorage以及用户的JWT令牌

环境 Apache服务器+Debian 9(仅在生产中)

角度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时,问题就出现了。