我目前在Laravel 5.3中构建了一个Web应用程序。
我使用带有SQL Server的Laravel Valet在我的MacBook Pro上本地运行。所有预期的功能都有效。
然后我将它上传到我在DigitalOcean上的Ubuntu Web服务器上,并且自从我开始这个项目(8个月前)以来没有任何问题就把它放到了那里。
对于特定表单POST请求,我收到令牌不匹配错误:
<app-select [aria-label]="'Type'"
[id]="'typeOption'"
[panelClass]="'filter multiple fluid search'"
[placeholder]="'Select Multiple...'"
[multiple]="true"
[selected]="selected.type"
(change)="selected.type = $event">
<option *ngFor="let type of typeOptions" [value]="type">{{ type }}</option>
</app-select>
用户已登录并且应用程序上的其他POST请求有效。表单在表单内部具有正确的CSRF令牌,并且令牌存储在页面头部的元标记()下。
我在本地没有这个问题,他们都有相同的数据库架构和内容。
我无法理解为什么这个问题只会发生在网络服务器上。
非常感谢任何帮助。
答案 0 :(得分:1)
基于我的假设:确保将$this->middleware('auth');
添加到控制器的构造函数中,以处理该帖子请求。
也可以在csrf令牌字段选项之一下使用:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
或者:
{{ csrf_field() }}