Till senaste kommentaren
Detta inlägg är gammalt och kan innehålla inaktuell information.

Cross-Origin Request Blocked: Hur löser jag detta?

Hej

Jag är medveten om CORS säkerhetsrisker och ni har sagt att ni inte kommer erbjuda JSON-P request i ett svar här på forumet för 4 år sedan.

Men nu har jag lagt in olika headers på min lokala server enbart för att få igång request från detta API men helt utan success. Jag är inte sugen på att stänga av CORS i min webbläsare utan är intresserad av hur egentligen det är tänk att man ska lösa detta problem?

Kommentarer

  • Hej Eric,

    Vilka APIer använder du?
    Orsaken att jag frågar är att det har gjort visa förbättringar på Resrobots APIer under det senaste året.

    Mvh, Åke

  • Hej Åke tack för snabbt svar.

    Jag har nu prövat med både SL och ResRobot. Båda två ger mig Cross-Origin Request Blocked.

    Såhär gör jag anropen:

    $.ajax({
    url: "http://api.sl.se/api2/realtimedepartures.json?k...",
    type: "GET",
    dataType: "json",
    success: function(msg) {
    alert("success");
    },
    error: function(req, status){
    alert(status);
    }
    });

    Detta kör jag via min lokala apache server där jag har följande headers settings:

    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
    Header always set Access-Control-Max-Age "1000"
    Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

    Mvh Eric

  • Hej Erik!

    ResRobot apierna har infört JSON-P. Det går antingen att använda sig utav parametern jsonpCallback där värdet är namnet på javascriptfunktionen som tar emot svarsdatat.

    var nameOfFunction = function(data){
    console.log(JSON.stringify(data));
    };
    $.ajax({
    url: 'https://api.resrobot.se/trip.<FORMAT>?key=<DIN NYCKEL>&Parametrar&jsonpCallback=nameOfFunction',
    dataType: 'jsonp',

    });

    Det går även göra på detta sätt.

    $.ajax({
    url: 'https://api.resrobot.se/trip.<FORMAT>?key=<DIN NYCKEL>&Parametrar',
    dataType: 'jsonp',
    jsonp: 'jsonpCallback',
    success: function(resp) {
    console.log(JSON.stringify(resp));
    }

    });

    Här finns det lite mera information om du är intresserad: https://learn.jquery.com/ajax/working-with-jsonp/

    Viktig sak är att tänka på är jsonp medför att din api nyckel kommer bli exponerad för dina användare.

    Med vänliga hälsningar
    Daniel Törbacka Samtrafiken

Kommentera eller skriv ett nytt inlägg

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