Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs';访问控制允许原点';使用Laravel CORS_Javascript_Angularjs_Laravel_Laravel 5 - Fatal编程技术网

Javascript Angularjs';访问控制允许原点';使用Laravel CORS

Javascript Angularjs';访问控制允许原点';使用Laravel CORS,javascript,angularjs,laravel,laravel-5,Javascript,Angularjs,Laravel,Laravel 5,我刚刚安装了Laravel CORS,据我所知,该模块运行良好,但我似乎仍然面临访问控制允许原点错误 无法加载XMLHttpRequest …I4OTYZMTJLYZYYMMMXOTVKNWI5YJNJYZM1MTCZNYISINMIOII2ZDCWZDG5N2FKOTQZDFKIN0=。 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,源“”不是 允许访问 下面是执行该函数的角度代码: var SomeApp = angular.module('

我刚刚安装了Laravel CORS,据我所知,该模块运行良好,但我似乎仍然面临访问控制允许原点错误

无法加载XMLHttpRequest …I4OTYZMTJLYZYYMMMXOTVKNWI5YJNJYZM1MTCZNYISINMIOII2ZDCWZDG5N2FKOTQZDFKIN0=。 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,源“”不是 允许访问

下面是执行该函数的角度代码:

var SomeApp = angular.module('SomeApp',['ngResource','ngSanitize'])
SomeApp.factory('SomeAppService', ['$resource', function($resource){

    return {          
       firstActions : $resource(svrid('acns') + '/action/:payload',{payload:'@payload'},
                {
                    'remove': {method:'DELETE',isArray:true, cache:false},
                    'save' : {method:'POST', isArray:true, cache:false},
                    'query' : {method:'GET', isArray:true,cache:false},
                }, {cache:false}        
        ),

        //some more other functions
    };

 }]);
在进一步深入研究代码时,我意识到假设附加的头并没有包含在xhr请求中(请参阅下图)

我错过了什么

更新1:我稍微缩小了问题的范围,最有可能的问题是config\cors.php没有正确地传递给asm89。对这个问题不是很有信心,但我做了一些手动覆盖,当我手动将
config\cors.php中的数组传递给asm89时,
OPTIONS
会起作用,但另一方面会导致其他方法失败

更新2:我尝试手动更改
Asm89\Stack\CorsService
下的一个部分,并为其设置如下默认值:

private function normalizeOptions(array $options = array())
    {
            $options += array(
            'allowedOrigins' => array('*'),
            'supportsCredentials' => true,
            'allowedHeaders' => array('*'),
            'exposedHeaders' => array('*'),
            'allowedMethods' => array('*'),
            'maxAge' => 0,
        );
        // Some other codes
        // normalize array('*') to true

        return $options;
    }
并注释出一小部分

public function handlePreflightRequest(Request $request)
{
    /*if (true !== $check = $this->checkPreflightRequestConditions($request)) {
    return $check;
    }*/

    return $this->buildPreflightCheckResponse($request);
}
它对飞行前
选项
获取
方法非常有效,但
发布
删除
方法将提示我一个错误

请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,源“”不是 允许访问。响应的HTTP状态代码为500


飞行前
选项
请求

之后,您需要在服务器端添加CORS响应头。

我遇到了一个类似的问题,所有跨域AJAX请求都可以工作,POST请求除外。POST响应将缺少“Access Control Allow Origin”标题,但GET和DELETE请求按预期运行

事实证明,我在php.ini中禁用了对不推荐的警告的抑制,并使用

$data = Input::json()->all();
在我的控制器中,PHP抛出了一个

 PHP Deprecated:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
警告,然后是

PHP Warning:  Cannot modify header information - headers already sent
警告

这意味着从未发送过我的自定义标题。我通过简单地抑制php.ini中不推荐使用的警告解决了这个问题。


我以后将不得不处理这个不推荐使用的问题,但目前它是从laravel中的JSON请求中获取POST数据的有效解决方法。

如果我没有记错的话,您的响应中应该有Access Control Allow Origin标头,因此,您可能必须更新给出响应的服务器。@Shilly您是怎么做的?您是怎么做的?请参考此链接。OP试图包含的库的目的应该是这样做的。