[英]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.