javascript - angularjs 阻止跨源请求

标签 javascript php slim

我使用 Slim 创建了一个 GET 函数,它在浏览器中运行良好,即当我点击链接时,但是当我通过 angularjs 调用相同的 url 时,它是显示错误。

 "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).

slim 框架安装在 folder_name 文件夹中

我在slim的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();

最佳答案

您可以使用选项路由。

//...

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

//...

关于javascript - angularjs 阻止跨源请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32714289/

相关文章:

javascript - Angular JS 联系表

php - 将相同的数据传递给多个 View Codeigniter

php - 向 Yii2 CRUD GridView 添加一个类

php - 使用 Slim 框架和 Twig 模板时出错

angularjs - 将空的 AngularStrap 属性与 Slim 一起使用

php - 如何使用 slim 3 Rest API 授权 google-api-php-client?

javascript - Three.js - 移动其中一个对象时如何保持对象链接?

javascript - 如何从不在 'change' 处理程序中的 kendoDatePicker 获取当前日期

javascript - 触发 OnClick 时对象属性变为 null

php - 使用 http_build_query() 时编码的数组键