【问题标题】:Cors not apply in laravel5.2Cors 不适用于 laravel5.2
【发布时间】:2017-07-12 01:37:46
【问题描述】:

在 postjob/store api 中处理这个 api 用户/登录问题的 Cors 我解决了这个问题,在 Angular 中添加了 cors true。 几天后我再次调用这个 api 发生同样的错误

XMLHttpRequest 无法加载 http://192.168.10.5/jobpost1/public/api/job。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:9001' 因此不允许访问。

Routes.php

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

Route::post('users/login', array('middleware' => 'Cors', 'uses' =>      'Auth\AuthController@login')); 
});`

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

 Route::group(['middleware'=>'jwt-auth'], function ()
  {
    Route::post('postjob/store', array('middleware' => 'Cors', 'uses'=>   'PostController@store'));

 });

});

Cors.php

 class Cors
 {

public function handle($request, Closure $next)
{




    // ALLOW OPTIONS METHOD
    $headers = [
        'Access-Control-Allow-Origin'=> '*',
        'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
        'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin',
        'Access-Control-Allow-Credentials' => 'true'
    ];
    if($request->getMethod() == "OPTIONS") {
        // The client-side application can set only headers allowed in Access-Control-Allow-Headers
        return Response::make('OK', 200, $headers);
    }

    $response = $next($request);
    foreach($headers as $key => $value)
        $response->header($key, $value);
    return $response;
}

角码

                return $http({
                method: 'POST',
                url: 'http://192.168.10.4/jobpost1/public/api/job',
                 cors: true,
                 xhrFields: { 
                 withCredentials: true
                  },
                params: {
      "token" :token,
      "user_id": userId,
      "job_shift": job_shift,
      "job_type": job_type,
      "job_description":job_description,
      "degree_title": degree_title,
      "city": city,
      "experience": experience,
      "career_level": career_level,
      "gender":gender,
     "total_position": total_position,
    "minimum_edu":minimum_edu,
     "apply_before": apply_before
                }
            }).then(function successCallback(response, status) {
      callback(response, status);
      debugger;
    }
      , function errorCallback(response, status) {
        callback(response, status);
        debugger;
      });
        }; 

【问题讨论】:

标签: php angularjs laravel-5.2


【解决方案1】:

而不是使用foreach添加标题:

foreach($headers as $key => $value)
    $response->header($key, $value);

试试这个:

$response->headers->add($headers);

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 2013-01-19
    • 2015-07-09
    • 2017-04-24
    • 2016-06-27
    • 2016-10-17
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多