Vraag


Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Topicstarter
Voor een JavaScript-applicatie komen de afbeeldingen van een andere server op een subdomein. Deze afbeeldingen staan op een vaste locatie. De afbeeldingen worden via het Image object ingeladen. Als de gevraagde afbeelding niet bestaat wordt de request doorgestuurd via mod_rewrite naar het generatiescript. Bij het doorsturen verandert de URL met een 302.

Indien ik geen Access-Control-Allow-Origin (ACAO) instel krijg ik bij reeds bestaande afbeeldingen naar verwachting de melding: Access to Image at 'http://bestanden.domein.nl/afbeelding.jpg' from origin 'http://domein.nl' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domein.nl' is therefore not allowed access.

Zodra ik de header ACAO * en in mijn JavaScript img.crossOrigin = 'anonymous' toevoeg werken alle bestaande afbeeldingen. Maar de afbeeldingen die nog niet bestaan worden doorgestuurd en daar krijg ik nog steeds een melding voor, maar deze wijkt af van de eerste melding: Redirect from 'http://bestanden.domein.nl/afbeelding.jpg' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domein.nl' is therefore not allowed access. Het gaat nu dus nog specifiek om de redirect.

Ik heb alle combinaties geprobeerd met Access-Control-Allow-Origin, Access-Control-Allow-Headers en Access-Control-Allow-Methods zonder resultaat. Via Google heb ik diverse oplossingen gevonden die niet werkten voor mijn situatie.Wie kan me helpen zodat ik het probleem begrijp? Zoals ik het zie is de ACAO ingesteld voor origin *, waarom werkt dan een redirect niet? Deze redirect blijft binnen het subdomein waar de afbeelding werd opgevraagd en dit werd toegestaan :/

Alle reacties


Acties:
  • 0 Henk 'm!

  • q-enf0rcer.1
  • Registratie: Maart 2009
  • Laatst online: 09-10 14:44
Als ik je omschrijving zo lees moet het probleem bij het generatiescript liggen, heb je daar ook de maatregelen genomen om CORS aan de praat te krijgen? Dat is tenslotte weer een laag dieper begrijp ik uit je verhaal, het lijkt mij dat het daar dan ook nog moet worden ingesteld.

Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Topicstarter
Het generatiescript staat op hetzelfde (sub)domein als de afbeelding die niet bestaat. Als ik de URL van het generatiescript gebruik i.p.v. de afbeelding werkt het wel. Daarom focus ik me op de redirect zelf.

Acties:
  • 0 Henk 'm!

  • Sharkware
  • Registratie: November 2003
  • Laatst online: 22-09 21:18
Heb je invloed op de werking van de server? Deze moet de header "Access-Control-Allow-Origin: [aanroepende hostname OF *]" mee terugsturen in de response.

Kun je zien of dit wel/niet gebeurd? Ik verwacht van niet.

[ Voor 18% gewijzigd door Sharkware op 10-04-2017 12:49 ]


Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

Topicstarter
Ik heb als tijdelijke oplossing de scripts "verplaatst" via htaccess door geen 302 me te sturen. Daardoor heeft het probleem minder haast.
Sharkware schreef op maandag 10 april 2017 @ 12:46:
Heb je invloed op de werking van de server? Deze moet de header "Access-Control-Allow-Origin: [aanroepende hostname OF *]" mee terugsturen in de response.

Kun je zien of dit wel/niet gebeurd? Ik verwacht van niet.
Dit gebeurd in alle gevallen. Oorspronkelijk deed ik het per domein instellen, maar om het probleem op te lossen heb ik die code vervangen voor de eenvoudige ACOA *.

Het is enkel de redirect die niet werkt. Waarbij het aanroepende domein genoemd wordt als hetgene dat geen toegang heeft. Verwijder ik de ACOA header, dan verandert de melding van "Redirect from ... " in een "Access to image ...". Zie ook de TS.