在AngularJS和PHP中允许CORS

时间:2014-09-16 00:24:12

标签: javascript php angularjs xmlhttprequest cors

我使用AngualrJS作为一个页面应用程序与一些PHP(MAMP PRO作为开发环境。)

在有角度的http get请求中,我有第三方api提供程序,它在http请求中给我json。

当我发出请求时,我会在请求的资源上显示“No'Access-Control-Allow-Origin'标头”。

基本上我现在在CORS中停留超过8小时!并且不确定如何使浏览器(Chrome / FF)覆盖CORS并发出http请求。

这是在Controller.js中获取请求:

在Angular js中:

factory.fetchJson = function (filePath) {

        return $http.get(filePath)
            .success(function (data, status) {
                return data;
                console.log('Success Fetch JSON', status);
            }).error(function (data, status, headers, config) {
                console.log('Error Fetch JSON', status);
            });
 }

设置允许在angualrjs Controller.js中使用CORS

myApp.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.useXDomain = true;
    $httpProvider.defaults.withCredentials = true;
    delete $httpProvider.defaults.headers.common["X-Requested-With"];
    $httpProvider.defaults.headers.common["Accept"] = "application/json";
    $httpProvider.defaults.headers.common["Content-Type"] = "application/json";

}
]);

允许在index.php标题中使用CORS的设置:

    <html>

<?php

    // Allow from any origin
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    echo "You have CORS!";

    ?>

我不是在JSOP或MIM代理之后。

帮助!

1 个答案:

答案 0 :(得分:1)