在向Laravel操作提交数据时,我的帖子请求无效。我是Angular的新手。通过不起作用我的意思是请求,但我得到500错误,并没有插入数据库中的行。
在角度我有一个定义此方法的表单组件。执行该方法然后按下提交按钮。
send(form: any): void
{
this.http.post('http://www.example.com.br/services/sendMessage', { "subject": "static subject" }).subscribe((res: Response) => { });
}
我的Laravel动作就是这个
public function sendMessage(Request $request)
{
$subject= $request->input("subject");
//code omitted for brevity
}
我用Fiddler进行了一次测试,在我添加了“Content-Type:application / json”之后它工作了(我得到500错误但是插入了行)。所以我试图在Angular中为我的帖子请求添加内容类型,但它没有用。我查看了Firefox开发人员窗口提供的请求标题,但似乎没有设置内容类型。
send(form: any): void
{
let headers = new Headers({ 'Content-Type': 'application/json'});
let options = new RequestOptions({ headers: headers });
this.http.post('http://www.example.com.br/services/sendMessage', { "subject": "static subject" }, options).subscribe((res: Response) => { });
}
问题可能是CORS吗?
当单击我的表单组件的按钮时,我在浏览器控制台中得到它
ERROR Object { _body: error, status: 0, ok: false, statusText: "", headers: Object, type: 3, url: null }
答案 0 :(得分:1)
这里有你可以做的,有一个名为laravel-cors的有用包,它允许你用Laravel中间件配置发送跨源资源共享头。当您从其他域发出http请求时,基本上会发生跨源问题。
安装过程:
composer require barryvdh/laravel-cors
然后将Cors \ ServiceProvider添加到config / app.php提供程序数组:
Barryvdh\Cors\ServiceProvider::class,
在您的pp / Http / Kernel.php中将添加到您的$ middleware数组
protected $middleware = [
// ...
\Barryvdh\Cors\HandleCors::class, // add this
];
您可以使用以下命令发布配置:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"