我有一个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');
答案 0 :(得分:0)
假设您的路线在routes.php中定义得很好,其他一切都很好。然后,您可以尝试在filters.php
App::before(function ($request) {
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS');
}
答案 1 :(得分:0)
我解决了这个问题。这是一个没有指向交易/批量的路线的问题。之前的开发人员对几个文件进行了无证的更改,而没有遵循我们的版本控制方法,因此生产分支被破坏了。