WebHU - Programozási kérdések és válaszok

Hozzáférés megtagadva COR-kérés IE10+-ban angularjs-ban, a szükséges Cross Origin Resource Sharing hibával (információ?)

Azt hittem, a böngészők közötti támogatás napjai a múlté, mivel a különféle könyvtárak elszigetelték a webböngészők bizonyos árnyalatait és az állítólagos szabványosítást, de...

Megpróbálok végrehajtani egy $http get kérést angularjs (v1.2.27) használatával, így:

       $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);
      });

ami úszva működik Chrome-on, FF-en és Safari-n (eddig Mac és Win 7, 8), de IE10+-on nem, ezt kapom:

SEC7118: XMLHttpRequest for https://[api.domain.com]/pdf/55abc12345613a szükséges Cross Origin Resource Sharing (CORS). Hiba: A hozzáférés megtagadva. az Anonymous függvényben (https://[domain.com]/site/scripts/scripts.js:289:6) az Anonymous függvényben (https://[domain.com]/public/assets/js/angular/angular.js:7736:11) a wrappedCallback webhelyen (https://[domain.com]/public/assets/js/angular/angular.js:11106:15) a wrappedCallback webhelyen (https://[domain.com]/public/assets/js/angular/angular.js:11106:15) az Anonymous funkciónál (https://[domain.com]/public/assets/js/angular/angular.js:11192:11) itt: Scope.prototype.$eval (https://[domain.com]/public/assets/js/angular/angular.js:12181:9) a Scope.prototype.$digest (https://[domain.com]/public)webhelyen/assets/js/angular/angular.js:12010:15) a Scope.prototype.$apply webhelyen (https://[domain.com]/public/assets/js/angular/angular.js:12285:13) és kész (https://[domain.com]/public/assets/js/angular/angular.js:7994:34) itt completeRequest (https://[domain.com]/public/assets/js/angular/angular.js:8196

Az api-kiszolgáló által visszaadott válaszfejlécek:

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

és ha megnézem a válasz törzsét (a fejlesztői eszközökben) azt az üzenetet kapom, hogy nem lehet renderelni (nem indokolatlanul, mert pdf), de van egy link a tartalom mentéséhez, amely mentéskor és megnyitásakor a helyes pdf.

Úgy tűnik, hogy a hálózati válasz azt mutatja, hogy a tartalom a tartalom hosszának megfelelően letöltődik.

Megnéztem számos COR-ral kapcsolatos hozzászólást, de hiába. A legközelebbi SEC7118: XMLHttpRequest. io/1/?t=1370206038749 szükséges Cross Origin Resource Sharing (CORS) nem segít. A Microsoft blogja http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx sem ad több támpontot (szerintem lehet, hogy valami köze van a "tömbpufferhez" és a bináris adatokhoz, de most zsákutcában vagyok, és további inspirációt keresek.

Valaki ajánl még valamit? ps. Én irányítom a kiszolgáló API-t, és a vert.x (v2.5) szolgáltatása Java REST szolgáltatásként működik.

Kösz


Válaszok:


1

Az állásfoglalás StackOverflow válasz megoldotta a problémát. A probléma nem a szerver válaszával volt, hanem a által létrehozott url megnyitásával

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

Az IE nem támogatja az előállított blob:xxx-yyy url ablak.open fájlját. Lásd a linkre adott választ a blobok IE10+-ban való megjelenítéséhez szükséges JavaScripthez (ez volt az, amit szerettem volna).

26.08.2015
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..