Error: Cross-Origin Request Blocked

0

Witam,
mam kod, który wysyła requesta, aby pobrać JSON, ale kiedy uruchamiam skrypt, pokazuje się następujący błąd:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://api.steampowered.com/ISteamUserStats/GetUserStatsForG…y=<<KLUCZ>>steamid=76561198449261235. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Jak mogę się go pozbyć?

1

JSON, o którego pytasz powinien być pod tą samą domeną, wywoływaną z tym samym protokołem, co strona, z której jest on wywoływany.
Ew. jeśli serwer, do którego się odwołujesz w zapytaniu jest twój i masz możliwość konfigurowania go, możesz mu ustawić:

<VirtualHost *:80>
  (...)
  Header set Access-Control-Allow-Origin "*"  
</VirtualHost>

Ew. (chociaż to bardzo niepolecane) możesz w przeglądarce poluzować reguły bezpieczeństwa dla danej domeny lub nawet globalnie, ale wtedy będzie działać tylko u ciebie.

0
Freja Draco napisał(a):

JSON, o którego pytasz powinien być pod tą samą domeną, wywoływaną z tym samym protokołem, co strona, z której jest on wywoływany.
Ew. jeśli serwer, do którego się odwołujesz w zapytaniu jest twój i masz możliwość konfigurowania go, możesz mu ustawić:

<VirtualHost *:80>
  (...)
  Header set Access-Control-Allow-Origin "*"  
</VirtualHost>

Ew. (chociaż to bardzo niepolecane) możesz w przeglądarce poluzować reguły bezpieczeństwa dla danej domeny lub nawet globalnie, ale wtedy będzie działać tylko u ciebie.

A możesz trochę jaśniej wyjaśnić te pierwsze rozwiązanie?

0

Np. masz dokument pod adresem:
https://domena.pl/plik_czytajacy.php

I robisz zapytanie dla:
xhttp.open("GET", "https://domena.pl/json.txt", true);

0
Freja Draco napisał(a):

Np. masz dokument pod adresem:
https://domena.pl/plik_czytajacy.php

I robisz zapytanie dla:
xhttp.open("GET", "https://domena.pl/json.txt", true);

Teraz rozumiem, ale dlaczego kiedy wysyłam requesta do http://dummy.restapiexample.com/api/v1/employees to mi wszystko działa, a do http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/?appid=550&key=<<KLUCZ>>&steamid=76561198449261235 już nie? przecież oba są pod inną domeną.

1

do celów developerskich możesz spróbować wykorzystać w Chrome rozszerzenie Allow CORS: Access-Control-Allow-Origin, które wyłącza w przeglądarce CORS

1
Gouda105 napisał(a):

dlaczego kiedy wysyłam requesta do http://dummy.restapiexample.com/api/v1/employees to mi wszystko działa, a do http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/?appid=550&key=<<KLUCZ>>&steamid=76561198449261235 już nie? przecież oba są pod inną domeną.

Widocznie jeden z tych serwerów dopuszcza takie zapytania i zwraca odpowiednią informację w nagłówku (patrz też mój pierwszy post):
Header set Access-Control-Allow-Origin "*"

0
Freja Draco napisał(a):
Gouda105 napisał(a):

dlaczego kiedy wysyłam requesta do http://dummy.restapiexample.com/api/v1/employees to mi wszystko działa, a do http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v2/?appid=550&key=<<KLUCZ>>&steamid=76561198449261235 już nie? przecież oba są pod inną domeną.

Widocznie jeden z tych serwerów dopuszcza takie zapytania i zwraca odpowiednią informację w nagłówku (patrz też mój pierwszy post):
Header set Access-Control-Allow-Origin "*"

Dlaczego steam nie dopuszcza takich zapytań skoro ma w swojej ofercie API?

1

Nie wiem, ale może poniższe ci pomoże:
https://danbeyer.github.io/steamapi/page2.html

0
Freja Draco napisał(a):

Nie wiem, ale może poniższe ci pomoże:
https://danbeyer.github.io/steamapi/page2.html

A da się to zrobić w JS zamiast NODE.js?

1
Gouda105 napisał(a):

A da się to zrobić w JS zamiast NODE.js?

Przecież w node.js piszesz w JS o.O

1 użytkowników online, w tym zalogowanych: 0, gości: 1