【发布时间】:2014-06-01 20:12:36
【问题描述】:
已经六个小时了,我仍然没有得到以下问题的解决方案。
我正在尝试让 AngularJS 从不同的域访问我的 API。在互联网上搜索后,我发现了这个package,它说它可以“在你的 Laravel 应用程序中添加 CORS(跨域资源共享)标头支持”
我遵循了所有的指示。设置这个和那个让它工作,但仍然没有运气。我的服务器总是向我发送相同的以下错误:
XMLHttpRequest 无法加载 http://lab.laracon/v1/lists?id=123&password=whatever&username=OSVC8HKKcvCFrsqXsMcbOVwVQvOL0wr3。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://lab.angularapi'。
这是我的 Angular 代码:
var Demo = angular.module( "Demo", [ "ngResource" ] );
Demo.controller(
"ListController"
function( $scope, ,$http, $resource ) {
$http.defaults.useXDomain = true;
$scope.useResource = function() {
var Lists = $resource('http://lab.laracon/v1/lists', {
username: 'OSVC8HKKcvCFrsqXsMcbOVwVQvOL0wr3',
password: 'whatever'
});
Lists.get({
id: 1
}, function(data) {
alert(data.ok);
});
};
}
);
这是我的 barryvdh laravel-cors 配置文件:
'defaults' => array(
'allow_credentials' => false,
'allow_origin' => array(),
'allow_headers' => array(),
'allow_methods' => array(),
'expose_headers' => array(),
'max_age' => 0,
),
'paths' => array(
'^/v1/' => array(
'allow_origin' => array('*'),
// 'allow_headers' => array('Content-Type'),
'allow_headers' => array('*'),
'allow_methods' => array('POST', 'PUT', 'GET', 'DELETE', 'OPTIONS'),
'max_age' => 3600,
),
),
最后这是我的 nginx 服务器配置:
location / {
# URLs to attempt, including pretty ones.
try_files $uri $uri/ /index.php?$query_string;
add_header 'Access-Control-Allow-Origin' 'http://lab.angularapi';
add_header 'Access-Control-Allow-Credentials' 'false';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
}
谁能帮帮我?我的代码和配置有什么问题?谢谢
【问题讨论】:
-
使用邮递员测试独立于角度的端点
-
当您发出请求时服务器会响应什么(什么标头)?发出 CORS 请求时,响应需要包含 Access-Control-Allow- 标头。通常当 CORS 不起作用时,这是因为响应缺少某些内容。
-
@shaunhusain 当我用邮递员测试它时,一切都运行良好。服务器向我发送了 JSON 数据。状态 200 正常。
-
@J.Wells 这正是问题所在。我知道服务器标头不包含 Access-Controll_allow。这就是为什么我用 laravel-cors 库插入我的应用程序的原因。但它似乎根本不起作用。我认为我的代码有问题,但我找不到。
-
当浏览器中的请求来自域 X 但转到域 Y 时,就会出现 CORS 问题。在服务器 Y 上响应的服务器必须将响应标头设置为允许来自域 X 的请求,否则浏览器将停止实际请求(您会看到一个 OPTIONS 请求)
标签: angularjs nginx laravel cors