首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用angular 7的API调用不读取PHP会话变量

使用angular 7的API调用不读取PHP会话变量
EN

Stack Overflow用户
提问于 2018-12-16 10:39:48
回答 1查看 387关注 0票数 0

我需要用angular和use会话创建简单的登录。为此,我有两个php文件和angular文件。

这是PHP文件1

代码语言:javascript
复制
session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');


$postdata = file_get_contents("php://input");

if(isset($postdata) && !empty($postdata)) {

    $request = json_decode($postdata);
    $username=trim($request->username);
    $password=trim($request->password);

  if($username == 'admin' && $password == 'admin') {
    $_SESSION['user'] = 'admin';
    ?>
{
  "success": true,
  "secret": "This is the secret no one knows but the admin"
}
    <?php
  } else {
    ?>
{
  "success": false,
  "message": "Invalid credentials"
}
    <?php
  }
} else {
  //var_dump($_POST)
  ?>
{
  "success": false,
  "message": "Only POST access accepted"
}
  <?php


}

?>

这是PHP文件2

代码语言:javascript
复制
    <?php
    session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

    $user = $_SESSION['user'];

             echo '{
                "message": "'.$user.'",
                 "success": true   
             }';


        ?>

在我的一个组件的ngOnInit()中,我调用了这两个API(我知道第一个API应该在登录提交按钮中触发,但出于测试目的,我在一个下面使用了这两个API)。我甚至使用settimeout函数来延迟第二次调用

代码语言:javascript
复制
 ngOnInit() {


    this.auth.getUserDetails('admin','admin')
    .subscribe(
      data => {
        console.log('success',data);
        if(data.success){

        }
        else{
          window.alert("invalid");
        }

    },
      error=> {
        console.log('failed',error);


      }
  ) 
  var _this=this;
  setTimeout(function(){


    _this.user.getSomeData().subscribe(data=>{

      console.log(data);

    })

    }, 3000);


  }

但是用户会话仍然不可用。我需要帮助来理解原因。请检查图像。For第一个post请求成功,但第二个get请求失败。它显示我使用的会话变量(user)不可用。

但该变量已由先前的请求设置。

This is the error i get

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 13:32:13

您正在两个不同的服务器上工作: PHP的localhost:80和angular的Localhost:4200,因此您的会话请求是Localhost:4200,此请求不能访问PHP会话。因此,请在angular中为PHP端请求设置头部。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53799010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档