Angular 2无法加载预检响应无效(重定向)[重复]

Posted

技术标签:

【中文标题】Angular 2无法加载预检响应无效(重定向)[重复]【英文标题】:Angular 2 Failed to load Response for preflight is invalid (redirect) [duplicate] 【发布时间】:2018-12-25 09:05:19 【问题描述】:

我将 Angular 2 与 Laravel php 框架一起用于我的 API。我的 Angular 2 项目在 http://localhost:4200/ 上运行,而我的 Laravel PHP 框架在 http://localhost:80/laravel/public 上运行

当我在我的 Angular 2 项目中运行它时:

getAllProfessionals():Observable<any> 
        return this.http.get(globals.baseUrl+'/professionals/', headers:this.utilService.getHeadersJson()).map(this.utilService.map);
    

我在浏览器中收到此错误:

无法加载http://localhost/laravel/public/api/v1/professionals/: 预检响应无效(重定向)

globals.baseUrl 是http://localhost/laravel/public/api/v1/

这是来自 this.utilService 的调用

getHeadersJson() 
        let headers = new Headers();
        headers.append('Accept', 'application/json');
        headers.append('Content-Type', 'application/json');
        headers.append('Authorization',  'Bearer ' + localStorage.getItem('token'));
        return headers;
       

    map(response: Response): any 
        return response.json();
    

我在这里做错了什么?我的 api 调用有问题吗?

当我这样做时得到电话:

getCountrys(filter):Observable<any> 
            return this.http.get(globals.baseUrl+'/country/' + filter, headers:this.utilService.getHeadersJson()).map(this.utilService.map);
        

让 Countrys 发挥作用的呼吁!

当我转到网址时:http://localhost/laravel/public/api/v1/professionals/

这是返回的内容:

请帮忙!

以下是位于我的路由文件夹中的 Laravel api.php 文件中的路由:

Route::middleware('auth:api')->get('/user', function (Request $request) 
    return $request->user();
);

Route::group([ 'prefix' => 'v1'], function () 

    Route::resource('register', 'v1\RegisterController');
    Route::resource('paintype', 'v1\PainTypeController');
    Route::resource('painlevel', 'v1\PainLevelController');
    Route::resource('painkiller', 'v1\PainKillersController');
    Route::resource('profession', 'v1\ProfessionsController');
    Route::resource('qualification', 'v1\QualificationsController');
    Route::resource('specialities', 'v1\SpecialitiesController');
    Route::resource('problems', 'v1\ProblemsController');
    Route::resource('user', 'v1\UserController');
    Route::post('login', 'v1\AuthController@login');
    Route::post('professionals', 'v1\ProfessionalsController@store');
    Route::post('patients', 'v1\PatientsController@store');
    Route::get('country/text', 'v1\LocationController@getCountries');
    Route::get('region/id', 'v1\LocationController@getRegions');
    Route::get('city/id', 'v1\LocationController@getCities');
    Route::get('reviews/username', 'v1\ReviewController@show');

    Route::group(['middleware' => ['before' => 'jwt.auth']], function () 
        Route::resource('post-job', 'v1\PostJobController');
        Route::post('reviews', 'v1\ReviewController@store');
        Route::get('profile', 'v1\AuthController@profile');
        Route::get('jobs/listjob', 'v1\PostJobController@getMyJobs');
    );

);

【问题讨论】:

显示您的相关路线。您似乎没有为此方法指定路线。 @Devond 在 Laravel 或 Angular 中的路由?我以前从未设置过这样的网站,有点困惑 Laravel 路由。 MethodNotAllowed (405) 通常意味着 laravel 没有为该端点和 HTTP 方法注册的路由。 @Devon 我更新了我的问题...这有帮助吗? 是的,太糟糕了,昆汀过早地关闭了这个。尝试打开一个标记 Laravel 的新问题,我会发布答案。 【参考方案1】:

问题是CORS 您需要在服务器(后端)上启用 CORS 标头并允许适当的 http 方法。整个事情很可能在您的 PHP 层或您用来提供数据的任何东西上。

【讨论】:

对国家的呼吁在 OP 中有效,所以我认为这与特定路线上的 405 错误更相关。 具体是什么标题?有效的飞行前响应是什么样的?

以上是关于Angular 2无法加载预检响应无效(重定向)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

某些 GET 请求对预检的 Angular2 响应无效(重定向)

角度 4 - 预检响应无效(重定向)

发生预检响应无效(重定向)错误

cors - 预检响应无效(重定向) - redux

对于 aws s3,预检响应无效(重定向)

ASP.NET Core Web API + Angular 对预检请求的响应未通过访问控制检查:预检请求不允许重定向