【发布时间】:2016-11-09 07:04:42
【问题描述】:
我正在使用ng-file-upload 上传图像文件以进行图像上传。使用给出的示例,我遇到了访问控制标头错误。
vm.uploadPic = function(file) {
file.upload = Upload.upload({
url: 'http://localhost:8000/api/v1/quotes/quoteitem/image/upload',
data: {quote_item_id: vm.quote_item_id, filename: file}
});
}
这会报错
XMLHttpRequest 无法加载 http://localhost:8000/api/v1/quotes/quoteitem/image/upload。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://localhost:3000'。
在邮递员中上传图片时我不需要任何标题请求,所以我删除了标题。
vm.uploadPic = function(file) {
file.upload = Upload.upload({
url: domain+'/api/v1/quotes/quoteitem/image/upload',
data: {quote_item_id: vm.quote_item_id, filename: file},
transformRequest: function(data, headersGetter) {
var headers = headersGetter();
headers['Content-type']=undefined;
return headers;
}
});
}
这给了
TypeError: data.hasOwnProperty 不是函数 在 ng-file-upload.js:310 在 angular.js:10484 在 forEach (angular.js:322) 在 transformData (angular.js:10483) 在 $get.serverRequest (angular.js:11211) 在 processQueue (angular.js:15961) 在 angular.js:15977 在 Scope.$get.Scope.$eval (angular.js:17229) 在 Scope.$get.Scope.$digest (angular.js:17045) 在 Scope.$get.Scope.$apply (angular.js:17337)
我已经被困了很长时间了。我已经在服务器端进行了测试,它在邮递员中运行良好。任何帮助都会很棒。
【问题讨论】:
-
您的服务器需要允许 CORS 用于 POST 和 OPTIONS。错误信息很清楚。从浏览器的网络选项卡中查看来自服务器的响应内容,并确保返回的选项请求带有正确的标头。