2015-08-25 39 views
0

我認爲跨瀏覽器支持的日子是過去的事情,各種庫在那裏從一些細微差別和Web瀏覽器聲稱標準化,但....訪問在IE10 +中angularjs拒絕CORs請求與所需的跨源資源共享錯誤(信息?)

我試圖執行$使用HTTP GET請求angularjs(v1.2.27)這樣的:

 $http({ 
      url: vm.hostName + '/pdf/' + id, 
      method : 'GET', 
      responseType : 'arraybuffer', 
      cache : false}) 
      .success(function (response) { 

       var file = new Blob([response], { type: 'application/pdf' }); 

       var fileURL = URL.createObjectURL(file); 
       console.log(fileURL); 
       console.log(response.data); 
       window.open(fileURL); 
     }); 

其中工程順順當當在Chrome,FF和Safari( Mac和Win 7,8到目前爲止),但不是在IE10 +,我得到這個:

SEC7118: XMLHttpRequest for https://[api.domain.com]/pdf/55abc12345613af7946e required Cross Origin Resource Sharing (CORS). Error: Access is denied. at Anonymous function (https://[domain.com]/site/scripts/scripts.js:289:6) at Anonymous function (https://[domain.com]/public/assets/js/angular/angular.js:7736:11) at wrappedCallback (https://[domain.com]/public/assets/js/angular/angular.js:11106:15) at wrappedCallback (https://[domain.com]/public/assets/js/angular/angular.js:11106:15) at Anonymous function (https://[domain.com]/public/assets/js/angular/angular.js:11192:11) at Scope.prototype.$eval (https://[domain.com]/public/assets/js/angular/angular.js:12181:9) at Scope.prototype.$digest (https://[domain.com]/public/assets/js/angular/angular.js:12010:15) at Scope.prototype.$apply (https://[domain.com]/public/assets/js/angular/angular.js:12285:13) at done (https://[domain.com]/public/assets/js/angular/angular.js:7994:34) at completeRequest (https://[domain.com]/public/assets/js/angular/angular.js:8196

API服務器返回的響應頭

Key Value 
Response HTTP/1.1 200 OK 
Server nginx/1.8.0 
Date Tue, 25 Aug 2015 13:40:45 GMT 
Content-Type application/pdf 
Content-Length 86057 
Connection keep-alive 
Access-Control-Allow-Methods GET, PUT, POST, OPTIONS 
Access-Control-Allow-Headers Origin, Content-Type, Accept 
Access-Control-Allow-Origin * 
Content-Transfer-Encoding binary 

,如果我看的響應體(開發人員工具),我得到一個消息,它不能被渲染(不是不合理,因爲它是pdf),但提供保存內容的鏈接,當保存並打開時顯示正確的pdf。

網絡響應似乎表明內容是根據內容長度下載的。

我看了一些CORs相關的帖子,但無濟於事。最接近的SEC7118: XMLHttpRequest for /socket.io/1/?t=1370206038749 required Cross Origin Resource Sharing (CORS)沒有幫助。 微軟博客http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx不給任何更多的線索是(我猜它可能有一些做的「arraybuffer」和二進制數據,但現在在一個死衚衕,尋找更多的靈感是。

任何暗示什麼嗎? PS。我在服務器API的控制,它是由vert.x(V2.5)作爲一個Java REST服務是服務。

感謝

回答

1

決議公佈StackOverflow answer分類問題 這個問題不是從服務器迴應的問題,問題出現在url的打開創建人

var file = new Blob([response], { type: 'application/pdf' }); 
var fileURL = URL.createObjectURL(file); 

IE不支持window.open生成的blob:xxx-yyy url。 請參閱IE10 +顯示blob所需的JavaScript的鏈接答案(這是我想要的)。

相關問題