无法使用Angular 4到Laravel操作执行发布请求

时间:2017-08-28 20:48:18

标签: php ajax laravel angular http

在向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 }

1 个答案:

答案 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"