簡體   English   中英

Laravel 419 未知狀態

[英]Laravel 419 unknown status

我正在從子域向主域發出 AJAX 請求。 我已經設置了 CORS,以便子域自動附加到允許的域列表。 我收到419 (unknown status)錯誤,在轉儲錯誤后我發現我收到TokenMissmatchException

我還注意到這實際上是正確的,因為我還看到:

"_token" => "h7I07Iv0m4sF7XHhXjtygnfCtITgzCi3Ml8lfT7Z" // <-- sent
"_token" => "N118Izko7j5uf851MpijBXInFLaUVicRdf9uw3h4" // <-- in session

我在檢查請求時在標頭部分看到它,顯然我正在使用我的 AJAX 請求發送令牌。

我想有一些不匹配正在進行,因為我從我的子域遍歷到我的域。

如何在我的主域和所有子域中對齊令牌,以免出現異常?

筆記

所有 AJAX 路由都從

<meta name="csrf-token" content="{{ csrf_token() }}">

將它附加到每個請求中

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

編輯

我把它放在session.php

"domain" => "." . env('APP_URL'),

因為餅干,盡管老實說我不確定它有什么作用

跨多個域的會話共享..... 可以進行調整。 要使 cookie 在所有子域中可用,您需要將其分配給根域。

 session.cookie_domain = ".example.com"

就我個人而言,我會推薦一種不同的方法(但這也取決於我無法從您的問題中完全了解的其他因素......)

執行來自/到同一個子域的 ajax 調用(受 CSRF 中間件保護,標准 CSRF 用法)在控制器上執行服務器到服務器對主域的后端調用(例如 curl_exec )

服務器到服務器的調用是不可見的,您可以保護它……例如,在網絡級別,或者如果兩個域通過互聯網進行通信,則添加一個 Oauth 服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM