gpt4 book ai didi

php - Laravel 仅针对一个路由/ Controller 给出 CORS 错误

转载 作者:行者123 更新时间:2023-12-05 06:40:19 24 4
gpt4 key购买 nike

注意:在此问题的底部进行编辑

我遇到了一个非常奇怪的问题,我开始为这个问题烦恼。我正在使用 Angular 和 Laravel 5.4。

我正在使用 Barryvdh\Cors它工作得很好。但是由于某种原因,我只收到一个 Controller 的以下错误,没有其他错误!

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.example.com/packing?data_type=prealert&shipment_ref=1. (Reason: missing token 'access-control-allow-headers' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel).

这只发生在 packing 中。

这是我的路线(为了便于阅读,我省略了很多其他线路):

    Auth::routes();

Route::get('/', 'HomeController@index');

Route::group([ 'middleware' => 'cors'], function()
{

// works
Route::resource('prealert', 'PrealertController');

// doesnt work
Route::resource('packing', 'PackingController');

// works
Route::resource('shipping', 'ShippingController');

});

我正在比较下面的两个 Controller ,如您所见,它们完全相同(我认为??)。

如果我改变

Route::resource('packing', 'PackingController');

Route::resource('packing', 'PrealertController');

它工作正常。

我假设它在 AngularJS 方面没有任何意义,因为我已经能够将它缩小到简单的那一行,即即使代码相同,当我简单地使用另一个 Controller 时它也能工作。

这是我的PackingController (Http/Controllers/PackingController.php)

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\PublishPackingRequest;
use Mockery\CountValidator\Exception;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use DB;
use Auth;


class PackingController extends Controller {

public function index( ) {

die('test');

}

}

还有我的PrealertController (Http/Controllers/PrealertController.php)

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\PublishPrealertRequest;
use Mockery\CountValidator\Exception;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Auth;
use DB;

class PrealertController extends Controller {


public function index() {
die('test');
}

}

编辑:

所以它变得更加奇怪,我将我的 PackingController.php 复制到一个名为 AnotherController.php 的文件并将我的路由行更改为以下...

Route::resource('packing', 'AnotherController');

我也把类名改成了AnotherController

甚至那也奏效了!也许我应该尝试删除文件

最佳答案

看起来您的 Controller 可能卡在命名空间自动加载缓存中?我会尝试以下方法来解决它,首先

composer -o dump-autoload

然后刷新路由缓存

php artisan route:cache

然后最后使用

检查路由是否确实存在
php artisan route:list  

我还会检查您是否可以看到 CORS 中间件正在应用于路由,因为您没有将它用作全局中间件。它应该像下图中中间件部分下的“oauth,api.company,api.user”一样出现 enter image description here

如果这不能解决问题,那么我会检查 Controller 的 Camel 外壳是否按正确的顺序匹配它从 Actions 部分是 route:list

关于php - Laravel 仅针对一个路由/ Controller 给出 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com