我的post请求在向Laravel操作提交数据时不起作用。我是一个全新的Angular新手。所谓不工作,我的意思是请求已经发出,但是我得到了500个错误,并且行没有插入到数据库中。
在angular中,我有一个定义此方法的表单组件。执行该方法,然后按下submit按钮。
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中添加一个内容类型到我的post请求中,但是不起作用。我查看了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 }发布于 2017-08-29 05:42:14
这是你可以做的,有一个叫做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"https://stackoverflow.com/questions/45927133
复制相似问题