CORS Response headers missing

Hej.

SL Transport / sites-endpoint svarar inte alltid med CORS headers. Jag är inte säker men det kan vara så att det uppstår när Cloudfront returnerar en cachad response.

Ex:
https://transport.integration.sl.se/v1/sites?expand=true


Problemet kan reproduceras i er API-browser:



Detta blir naturligtvis problem när endpointen anropas från en webbapp.

/Karl

Karl

Kommentarer

  • Hej Carl,

    Jag har skickat vidare frågan till SL, då detta tidigare har lagts till så det ska vara med.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej

    Har ni fått något svar från SL?

    Hälsningar,
    Karl
    Karl
  • Hej,

    Detta problem finns fortfarande, har ni någon ide om när det kommer att hanteras?

    Hälsningar
    /Jesper
    Jesper
  • Hej!

    Efter att en första felsökning hos SL inte löste problemet har ärendet skickats vidare till deras utvecklingsteam. Prognosen just nu är att det blir löst inom 1-2 veckor.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej Jesper,

    Problemet borde vara löst. Det är dock så att CORS-headern endast finns om webbläsaren skickar med följande två headers i anropet, vilket webbläsaren borde göra automatiskt:

    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: cross-site

    Hälsningar,
    Bert

    Bert på Trafiklab
  • Toppen, tack!
    Karl
  • Hej,

    Jag har provat och vad jag kan se är inte problemet löst, antingen det eller så är det något som jag inte begriper. Jag använder den senaste versionen av webläsaren Chrome på MacOs. Om jag anropar tex följande url: https://journeyplanner.integration.sl.se/v1/TravelplannerV3_1/trip.json?key=TRAFIKLAB-SLAPI-INTEGRATION-2024&originExtId=300103715&destExtId=300109001 direkt i webläsaren fungerar det utmärkt, allt enligt plan. Men om jag anropar samma url från en web-app så får jag CORS fel. Jag kan se att de ovan nämnda headers skickas med i anropet.

    sec-fetch-mode: cors
    sec-fetch-site: cross-site

    Men i response-headers finns inte den cors header som behövs, dvs
    access-control-allow-origin: *
    saknas. Den response-headern finns med i de REST anrop som fungerar, dvs 
    https://transport.integration.sl.se/v1/sites/3715/departures anropet fungerar väl och har de response-headers som borde finnas.

    Jag inser nu att den ursprungliga frågan rör SL Transport APIt, medan de problem jag har rör SL Route-planner v3.1 APIt. Hur fungerar detta API med CORS?

    /Jesper
    Jesper
  • Hej!

    Jag har skickat vidare frågan angående SL Route planner 3.1. Det stämmer att headern aldrig finns med där just nu.

    Vidare verifiering visades i övrigt att det inte är "sec-fetch-mode: cors" och "sec-fetch-site: cross-site" som styr CORS-headern, utan det är Origin headern som måste finnas med. Den headern finns också automatiskt med när man gör ett CORS-anrop från webbläsaren.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej igen,

    Tyvärr är problemet inte löst. Origin-headern skickas med i requesten men "access-control-allow-origin" saknas i responsen. Jag tror felet ligger i deras konfigurering av Cloudfront cachen.

    Hälsningar,
    Karl
    Karl

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.