【发布时间】:2013-12-26 20:51:20
【问题描述】:
我在这方面有点卡住了,因为我是 Angular 和 Web 开发的新手,所以不知道该去哪里找。
我已经构建了一个简单的服务,它使用 Angular 中的 $resource 服务调用设置为接受跨域调用的 RESTapi:
angular.module('vinifyApp')
.factory('WinesVinibar',function($resource){
return $resource('http://devinify1.herokuapp.com/wines/');
})
.controller('GetWinesVinibarCtrl', function($scope, WinesVinibar){
$scope.WINES = WinesVinibar.query();
}
我已经在本地和 heroku 上测试了这项服务,它在 Chrome 和 Firefox 上运行良好。以下是 Chrome 的请求和响应:
要求 接受:*/* 接受编码:gzip、deflate、sdch 接受语言:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 连接:保持活动 主机:devinify1.herokuapp.com 来源:http://mobilevinify.herokuapp.com 参考:http://mobilevinify.herokuapp.com/ 用户代理:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 响应标头view source 访问控制允许来源:* 允许:GET、POST、HEAD、OPTIONS 连接:保持活动 内容类型:应用程序/json 日期:2013 年 12 月 9 日星期一 16:16:36 GMT 服务器:gunicorn/18.0 传输编码:分块 变化:接受,Cookie但是,请求因 Safari 而失败,并出现以下错误:
[错误] 加载资源失败:Access-Control-Allow-Headers 不允许请求头字段 Accept-Encoding。 (葡萄酒,第 0 行)以下是请求和响应标头:
要求 访问控制请求方法 GET 用户代理 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9) AppleWebKit/537.71 (KHTML, like Gecko) 版本/7.0 Safari/537.71 Access-Control-Request-Headers 接受语言、来源、接受编码 回复 访问控制最大年龄 86400 访问控制允许方法 GET、POST、PUT、PATCH、DELETE、OPTIONS 内容类型文本/html;字符集=utf-8 访问控制允许来源 * 连接保持活动 Access-Control-Allow-Headers x-requested-with、content-type、accept、origin、authorization、x-csrftoken 内容长度 0编码似乎有问题,但我不知道去哪里解决这个问题。 感谢您的宝贵时间!
【问题讨论】:
标签: javascript angularjs safari resources cors