405方法不允许POST Laravel

时间:2016-08-22 13:11:06

标签: php web-services laravel

我有一个laravel api,我正在尝试运行自定义artisan命令来处理事务。 api用于检查我们的商家数据库中的待处理事务,并将它们发布在我们的事务数据库中。 我收到以下错误:

[GuzzleHttp\Exception\ClientException]
  Client error: `POST http://paycentral.mymarket.com/transactions/bulk` resulted in a `405 Method Not Allowed` response:
  {"error":{"message":"405 Method Not Allowed","status_code":405,"debug":{"line":446,"file":"\/var\/www\/vhosts\/maindomai (truncated...)

我正在使用的API位于api.mymarket.com。搜索这样的错误让我相信这是一个与CORS相关的问题。我正在使用laravel-cors并在api.mymarket.com和paycentral.mymarket.com的公共文件夹中的.htaccess中添加了Header set Access-Control-Allow-Origin“*”。但错误仍然存​​在。还有其他可行的解决方法吗?我们目前正在使用plesk进行托管服务。

更新:我尝试在付费子域中执行预检请求 来源:api.mymarket.com 访问控制请求方法:POST 访问控制请求标头:MM

它返回了500内部错误,这是我猜的进展。

UPDATE这是paycentral的routes.php。 cors-library在app.php中注册。

paycentral routes.php

<?php

$api = app('Dingo\Api\Routing\Router');

// all routes are protected by the Authenticate middleware which makes sure     the client
// is authenticated as *somebody* - each resource is further protected by  the authorization
// policies in the App\Api\V1\Policies files to limit the method calls by which client
// type is attempting to access the resource - these must be mapped in the     AuthServiceProvider
$api->group([
    'version' => 'v1',
    'namespace' => 'App\Api\V1\Controllers',
    'middleware' => 'auth' // use the Authenticate middleware
], function($api) {

/*
     * partial CRUD resource routes
     */

    $api->get('transactions/{id}', 'TransactionController@show');
    $api->post('transactions', 'TransactionController@store');
    $api->put('transactions/{id}', 'TransactionController@update');
    $api->post('transactions/bulk', 'TransactionController@store_bulk');
    $api->post('transactions/get_updates',  'TransactionController@get_updates');

2 个答案:

答案 0 :(得分:0)

假设您的路线在routes.php中定义得很好,其他一切都很好。然后,您可以尝试在filters.php

中添加以下行
App::before(function ($request) {
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS');
}

答案 1 :(得分:0)

我解决了这个问题。这是一个没有指向交易/批量的路线的问题。之前的开发人员对几个文件进行了无证的更改,而没有遵循我们的版本控制方法,因此生产分支被破坏了。