【问题标题】:Unable to set cookie on localhost:3000无法在 localhost:3000 上设置 cookie
【发布时间】:2020-07-31 03:13:04
【问题描述】:

我正在 localhost:3000 上运行一个反应应用程序。我在默认的 XAMPP localhost 上向我的后端发出 axios 请求以设置cookie。在以前的尝试中,如果我的前端位于默认的 XAMPP localhost 中,我可以设置cookie。但是自从切换到 react 开发服务器,localhost:3000。我无法设置 cookie。

这是我的 php 文件:

header("Access-Control-Allow-Origin: *");
require __DIR__ . './vendor/autoload.php';
use \Firebase\JWT\JWT;

if(isset($_POST)){
    //grab secret key from .env file, remember to exclude from gitignore.
    $dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
    $dotenv->load();
    $key = $_ENV['SECRET_KEY'];

    //access post data to for jwt creation
    $data = json_decode(file_get_contents("php://input"), true);
    $timezone = new DateTimeZone('Asia/Kuching');
    $expiry = new DateTime();
    $expiry->setTimezone($timezone);
    $expiry->modify("+2 days");
    
    $date = $expiry->format("Y-m-d H:i:s.v");
    $payload = array(
        "ttl"=>$date,
        "data"=>$data['tokenValue']
        
    );
    $jwt = JWT::encode($payload,$key);
    setcookie("accessToken",$jwt,[
        'expires'=>$date,
        'path'=>'/',
        'domain'=>'localhost',
        'secure'=>false,
        'httponly'=>true,
        'samesite'=>'None'
    ]);
    
}

可能出了什么问题?我确实将域从“localhost”更改为“localhost:3000”,但它仍然不起作用。

【问题讨论】:

    标签: php cookies


    【解决方案1】:

    找到了基于这个question的解决方案。

    首先在 react 应用中,在 axios 方法中,这样做:

    axios
      .post(url, JSON.stringify(payload), {
        withCredentials: true,
    }).then(....)
    

    您需要在请求标头中添加凭据真实标头。在 php 文件中执行相同的操作。

    在文件的开头这样做,

    header("Access-Control-Allow-Origin: http://localhost:3000");
    header("Access-Control-Allow-Credentials: true");
    

    之前,access-control-allow-origin 设置为 *。但是为了给 localhost:3000 设置一个 cookie,我们这样做了。还包括 allow-credentials,因为我们发送 axios 请求时的凭据为 true。

    它现在应该可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2019-07-07
      相关资源
      最近更新 更多