2019-08-01 15:13:21 2606次浏览 1条回答 0 悬赏 10 金钱

用户登录成功后,后台程序会生成一个带签名的token返回给浏览器,当用户想要进一步操作时必须向后端提供该token,后端验证token无误后才允许进一步操作。但有个问题我一直有疑惑,网上也搜不到,大都是一笔带过,那就是后台生成的token是通过什么方式返回给前台的,cookie还是header?header能支持跨域吗?前端又是怎么把token传给后端的,url还是header?具体怎么弄的能不能说详细点,比如我用php将token加到header里:header("Authorization", $token) 为什么无效,要怎么设置?php 如何接收参数 Authorization 的值?

  • 回答于 2019-08-01 22:08 举报

    1.后台生成的token是通过什么方式返回给前台的
    PHP加载页面的时候,直接赋值,比如加载一个a.php,其实是

    $_params_ = ["token" =>12321321];
    extract($_params_, EXTR_OVERWRITE);
    ob_start();
    require "a.php";
    $content = ob_get_clean();
    echo $content;
    

    具体可以参考Yii的View组件源码renderPhpFile方法(yiisoft\yii2\base\View.php)
    在a.php中

    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    </head>
    <body>
        <?php echo $token;?>
    </body>
    </html>
    

    一般前端都会放到meta标签里面
    一般不会存在cookie里面,因为cookie的设置一般都是secure、http_only都是true
    header也是可以的,但是需要前后端分离或者是ajax请求,比如

    $token = 123213;
    header("token: $token");
    

    2.前端又是怎么把token传给后端的,url还是header
    url就算了,get请求把token明文放url上面不安全,post请求把token放body体里面
    header也可以,前端发一个请求头是

    token: 12313
    

    后端可以

    $_SERVER["HTTP_TOKEN"]
    

    3.比如我用php将token加到header里:header("Authorization", $token) 为什么无效,要怎么设置

    header("Authorization: 1234");
    
您需要登录后才可以回答。登录 | 立即注册
PHP学院的中学生
副总裁

PHP学院的中学生

注册时间:2018-10-23
最后登录:2023-07-25
在线时长:167小时55分
  • 粉丝29
  • 金钱4725
  • 威望30
  • 积分6695

热门问题