我的应用程序在前端使用React,在后端使用Laravel 5.4.我正在使用fetch()从后端请求数据.问题是页面加载时会创建两个会话.TokenMismatchException当发出POST请求时,CSRF中间件会抛出A,因为发送的令牌与创建的第一个会话匹配,但它会检查第二个会话.
我正在设置令牌 app.blade.php
<meta name="_token" content="{{ csrf_token() }}">
并在获取配置中获取令牌
fetchConfig = {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
},
credentials: 'same-origin'
}}
Run Code Online (Sandbox Code Playgroud)
以下是解密的会话:
a:3:{s:6:"_token";s:40:"7obvOzPaqqJDtVdij8RaqrvmTFLjKA2qnvYMxry6";s:9:"_previous";a:1:{s:3:"url";s:24:"http://localhost/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
a:3:{s:6:"_token";s:40:"5Aiws9Qy72YzlkfWX81zkhzrSeiMDYjFWiLeDAwN";s:9:"_previous";a:1:{s:3:"url";s:41:"http://localhost/api/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}
Run Code Online (Sandbox Code Playgroud)
请求网址: http://localhost/page
API网址: http://localhost/api/page
如何在React应用程序发出初始GET请求时阻止创建新会话?
我正在使用CakePHP 2.2.3.我有一个没有表格但有验证规则的模型的联系表格.
我的问题是,如何告诉CakePHP输入类型是textarea?我可以使用,$this->Form->textarea()但我注意到,当我使用它时,它不会创建适当的HTML来报告验证错误.如果我使用$this->Form->input()它只是创建一个普通的输入类型文本.
它应该创建类似于:
<div class="input email required"><input name="data[Quote][email]" required="1" type="email" id="QuoteEmail"/></div>
Run Code Online (Sandbox Code Playgroud)
但相反,它创建了类似的东西:
<textarea name="data[Quote][company_description]" id="QuoteCompanyDescription"></textarea>
Run Code Online (Sandbox Code Playgroud)
注意缺少<div class="input email required"></div>,我假设是CakePHP用来注入验证错误的DOM元素.
我想知道实现这一目标的最佳方法是什么.