ng2-file-upload访问控制源问题

时间:2017-02-17 11:06:05

标签: angular file-upload

我已将此库用于angular2文件上传https://github.com/valor-software/ng2-file-upload

现在我上传文件时出现此错误

  

XMLHttpRequest无法加载http://localhost:8080/files。对预检请求的响应未通过访问控制检查:当请求的凭据模式为“包含”时,响应中的“Access-Control-Allow-Origin”标头的值不能是通配符“*”。因此,不允许原点“http://localhost:3000”访问。 XMLHttpRequest发起的请求的凭证模式由withCredentials属性控制。

3 个答案:

答案 0 :(得分:16)

在上传项目之前设置withCredentials = false。您可以将此代码放在ngOnInit / constructorngOnChanges中。

this.uploader.onBeforeUploadItem = (item) => {
  item.withCredentials = false;
}

答案 1 :(得分:1)

您的服务器正在使用以下CORS Header

进行回复
'Access-Control-Allow-Credentials' = true

这是CORS提供的安全性,您不能这样做。如果您要允许凭据,则无法使用Access-Control-Allow-Origin = *。您必须指定确切的域。尝试指定

localhost:<portnumber>

有关更多信息,请查看以下链接

  1. Access-Control-Allow-Origin wildcard subdomains, ports and protocols
  2. Cross Origin Resource Sharing with Credentials
  3. CORS: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true

答案 2 :(得分:0)

您可以尝试以下方法:

ngAfterViewInit() {
   this.uploader.onAfterAddingFile = (item => {
      item.withCredentials = false;
   });
}