2015-09-22 9 views
1

Я создал функцию GET, используя Slim, которая отлично работает в браузере, т. Е. Когда я нажимаю ссылку, но когда я вызывал тот же url через angularjs, он показывает ошибку.Запрос на перекрестный запрос Заблокирован в angularjs

"NetworkError: 404 Not Found - http://www.example.com/folder_name/getSongs/0/10" 
    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.example.com/folder_name/getSongs/0/10. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 
    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource. (Reason: CORS request failed). 

стройные рамки установки в папке название_папки

моего кода в index.php из стройных следующим образом.

//my db functions file 
require_once './common/myfunctions.php'; 

require 'Slim/Slim.php'; 
\Slim\Slim::registerAutoloader(); 

$app = new \Slim\Slim(); 

$app->get('/getSongs/:minLimit/:maxLimit', function ($minLimit, $maxLimit) use ($app) { 

    $response = $app->response(); 
    $response->header('Access-Control-Allow-Origin', '*'); 
    $response->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE, PUT'); 
    $response->header('Access-Control-Max-Age', '1000'); 
    $response->header('Access-Control-Allow-Headers', 'x-requested-with, Content-Type, origin, authorization, accept, client-security-token'); 

    $response_array = array(); //response will be send 

    $songList = getSongsList($minLimit, $maxLimit); 

    if (isset($songList) && !empty($songList)) { 

     foreach ($songList as $key => $value) { 
      $response_array['data'][$key] = $value; 
     } 
     $response_array['success'] = TRUE; 

     $app->status(200); //Ok 
    } 
    //blank array 
    else { 
     $response_array = array("success" => TRUE, "data" => NULL); 
     $app->status(204); //No Content 
    } 

    echo json_encode($response_array); 
}); 

$app->run(); 

ответ

2

вы можете использовать опцию маршрута.

//... 

$app->options('/:anything+', function () { 
    $app->response->header("Access-Control-Allow-Origin", "*"); 
}); 

//... 
+0

спасибо, что работает –

1

Это вопрос CORS, в файле PHP добавить в верхней

header("Access-Control-Allow-Origin: *");

Можно также указать список IP-адрес, который он должен позволить, а не *

Подробнее читайте здесь https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

Я добавил это в свой файл PHP на 1-й линии заголовок ('Access-Control-Allow-Origin: *'); header ('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT'); header ('Access-Control-Max-Age: 1000'); header ('Access-Control-Allow-Headers: x-request-with, Content-Type, origin, authorization, accept, client-security-token'); , но он не работает –

+0

, когда вы выполняете его через браузер, проверьте, приходят ли заголовки к вам с помощью инструментов разработчика (в заголовках ответов). Если вы не помещаете их в неправильное место – joyBlanks

+0

Я проверил его в хроме, а я Получают правильные заголовки. –

Смежные вопросы