Angular 2加载失败,预检请求的响应无效(重定向)。

9 浏览
0 Comments

Angular 2加载失败,预检请求的响应无效(重定向)。

我在使用Angular 2与Laravel PHP框架进行API开发。我的Angular 2项目运行在http://localhost:4200/,而我的Laravel PHP框架运行在http://localhost:80/laravel/public

当我在Angular 2项目中运行以下代码时:

getAllProfessionals():Observable {
        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/

这是我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调用有问题吗?

当我进行如下get请求时:

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

这个获取国家的调用是有效的!

当我访问URL:http://localhost/laravel/public/api/v1/professionals/时,返回以下内容:

enter image description here

请帮忙解决!

这是我在Laravel的api.php文件中的路由定义,位于我的routes文件夹下:

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');
    });
});

0
0 Comments

这个问题是由于CORS引起的,需要在服务器(后端)上启用CORS头并允许适当的HTTP方法。整个问题很可能与PHP层或用于提供数据的其他工具有关。

在OP中,对于国家的调用是有效的,所以我认为这更与特定路由上的405错误相关。

具体是哪些头?有效的预检响应是什么样的?

0