Nie ma nagłówka 'Access-Control-Allow-Origin' na żądanym zasobie-podczas próby pobrania danych z interfejsu API REST

Próbuję pobrać niektóre dane z REST API HP Alm. Działa całkiem dobrze z małym skryptem curl-dostaję swoje dane.

Teraz robienie tego z JavaScript, fetch i ES6 (mniej więcej) wydaje się być większym problemem. Ciągle dostaję ten Komunikat o błędzie:

API Fetch nie może się załadować . Odpowiedź na żądanie inspekcji wstępnej nie pass access control check: No' Access-Control-Allow-Origin ' header is obecny na żądanym zasobie. Pochodzenie " http://127.0.0.1:3000 " jest w związku z tym dostęp nie jest dozwolony. Odpowiedź miała kod statusu HTTP 501. Jeśli nieprzezroczysta odpowiedź odpowiada twoim potrzebom, ustaw tryb żądania na "no-cors", aby pobrać zasób z wyłączonym CORS.

Rozumiem, że to dlatego, że próbuję pobrać te dane z mojego localhost i rozwiązanie powinno używać CORS. Teraz myślałem, że rzeczywiście to zrobiłem, ale jakoś to albo ignoruje to, co piszę w nagłówku, albo problem jest coś else?

Czy jest problem z implementacją? Źle to robię? Niestety nie mogę sprawdzić logów serwera. Trochę tu utknąłem.

function performSignIn() {

  let headers = new Headers();

  headers.append('Content-Type', 'application/json');
  headers.append('Accept', 'application/json');

  headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
  headers.append('Access-Control-Allow-Credentials', 'true');

  headers.append('GET', 'POST', 'OPTIONS');

  headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));

  fetch(sign_in, {
      //mode: 'no-cors',
      credentials: 'include',
      method: 'POST',
      headers: headers
    })
    .then(response => response.json())
    .then(json => console.log(json))
    .catch(error => console.log('Authorization failed : ' + error.message));
}

Używam Chrome. Próbowałem również użyć wtyczki Chrome CORS, ale potem otrzymuję kolejny komunikat o błędzie:

Wartość nagłówka 'Access-Control-Allow-Origin' w odpowiedzi nie może być znakiem wieloznacznym"*", gdy tryb poświadczeń żądania jest "include". Pochodzenie " http://127.0.0.1:3000 " jest dlatego niedozwolone dostęp. Tryb uwierzytelniania wniosków inicjowanych przez XMLHttpRequest jest kontrolowany przez atrybut withCredentials.

Author: Jonas, 2017-05-09

14 answers

Ta odpowiedź obejmuje dużo ziemi, więc jest podzielona na trzy części:

    Jeśli nie masz dostępu do serwera proxy CORS, skontaktuj się z nami, aby uzyskać więcej informacji na temat tego, jak korzystać z serwera proxy CORS.]}
  • Jak uniknąć kontroli wstępnej Kors
  • Jak naprawić "nagłówek Access-Control-Allow-Origin nie może być symbolem wieloznacznym" problemy

Jak korzystać z serwera proxy CORS, aby uniknąć problemów z nagłówkiem "No Access-Control-Allow-Origin"

Jeśli nie kontroluj serwera, do którego kod frontendu wysyła żądanie, a problemem z odpowiedzią z tego serwera jest po prostu brak niezbędnego nagłówka Access-Control-Allow-Origin, nadal możesz dostać rzeczy do pracy-wykonując żądanie przez serwer proxy CORS.

Możesz łatwo uruchomić własny serwer proxy za pomocą kodu z https://github.com/Rob--W/cors-anywhere/.
Możesz również łatwo wdrożyć swój własny serwer proxy do Heroku w ciągu zaledwie 2-3 minut, używając 5 komend:

git clone https://github.com/Rob--W/cors-anywhere.git
cd cors-anywhere/
npm install
heroku create
git push heroku master

Po uruchomieniu tych polecenia, skończysz z własnym serwerem CORS Anywhere działającym na np. https://cryptic-headland-94862.herokuapp.com/.

Teraz przedrostek adresu URL żądania z adresem URL serwera proxy:

https://cryptic-headland-94862.herokuapp.com/https://example.com
Po dodaniu adresu URL serwera proxy jako prefiksu żądanie zostanie wysłane przez serwer proxy, który następnie:]}
  1. przekazuje żądanie do https://example.com.
  2. otrzymuje odpowiedź od https://example.com.
  3. dodaje nagłówek Access-Control-Allow-Origin do odpowiedzi.
  4. przekazuje tę odpowiedź, z dodanym nagłówkiem, z powrotem do żądającego frontend code.

Przeglądarka pozwala następnie kodzie Nakładki na dostęp do odpowiedzi, ponieważ ta odpowiedź z nagłówkiem odpowiedzi Access-Control-Allow-Origin jest tym, co widzi przeglądarka.

Działa to nawet wtedy, gdy żądanie jest takie, które uruchamia przeglądarki do wykonania żądania wstępnego inspekcji Kors OPTIONS, ponieważ w takim przypadku proxy odsyła również nagłówki Access-Control-Allow-Headers i Access-Control-Allow-Methods potrzebne do pomyślnego przeprowadzenia inspekcji wstępnej.


Jak uniknąć kontroli wstępnej Kors

Kod w pytanie uruchamia preflight CORS - ponieważ wysyła nagłówek Authorization.

Https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

Nawet bez tego, nagłówek Content-Type: application/json również wywołałby inspekcję wstępną.

Zanim przeglądarka spróbuje POST w kodzie w pytaniu, najpierw wyśle OPTIONS żądanie do serwera - w celu ustalenia, czy serwer decyduje się na otrzymanie cross-origin POST, który ma Authorization i Content-Type: application/json nagłówki.

Działa całkiem dobrze z małym skryptem curl-dostaję swoje dane.

Aby poprawnie przetestować z curl, musisz emulować żądanie inspekcji wstępnej OPTIONS, które przeglądarka wysyła:

curl -i -X OPTIONS -H "Origin: http://127.0.0.1:3000" \
    -H 'Access-Control-Request-Method: POST' \
    -H 'Access-Control-Request-Headers: Content-Type, Authorization' \
    "https://the.sign_in.url"

... Z https://the.sign_in.url zastąpionym przez Twój rzeczywisty URL sign_in.

Odpowiedź przeglądarka musi zobaczyć z tego OPTIONS żądanie musi mieć nagłówki takie jak:

Access-Control-Allow-Origin:  http://127.0.0.1:3000
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Content-Type, Authorization

Jeśli odpowiedź OPTIONS nie zawiera tych nagłówków, to przeglądarka zatrzyma się tam i nigdy nie spróbuje wysłać POST żądania. Ponadto kod statusu HTTP odpowiedzi musi mieć wartość 2xx-zazwyczaj 200 lub 204. Jeśli jest to inny kod stanu, przeglądarka zatrzyma się tutaj.

Serwer w pytaniu odpowiada na zapytanie OPTIONS kodem stanu 501, co najwyraźniej oznacza, że próbuje wskazać, że nie implementuje obsługi zapytań OPTIONS. Inne Serwery zazwyczaj odpowiadają kodem stanu 405 "Method not allowed" w tym case.

Więc nigdy nie będziesz w stanie wysyłać POST żądań bezpośrednio do tego serwera z kodu JavaScript, jeśli serwer odpowie na to żądanie OPTIONS żądaniem 405 lub 501 lub czymkolwiek innym niż 200 lub 204 lub jeśli nie odpowie niezbędnymi nagłówkami odpowiedzi.

W związku z tym, że nie jest to możliwe, nie jest to możliwe.]}
  • jeśli serwer nie wymagał nagłówka żądania Authorization, a zamiast tego np. polegał na dane uwierzytelniające osadzone w treści zapytania POST lub jako zapytanie param
  • jeśli serwer nie wymagał, aby ciało POST miało typ nośnika Content-Type: application/json, ale zamiast tego zaakceptował ciało POST jako application/x-www-form-urlencoded z parametrem o nazwie json (lub cokolwiek innego) , którego wartością są dane JSON

Jak naprawić "nagłówek Access-Control-Allow-Origin nie musi być symbolem wieloznacznym" problemy

Otrzymuję kolejny komunikat o błędzie:

Wartość nagłówka "Access-Control-Allow-Origin" w odpowiedzi nie może być znakiem wieloznacznym"*", gdy tryb poświadczeń żądania jest "include". Pochodzenie "http://127.0.0.1:3000" nie jest zatem dozwolone dostęp. Tryb uwierzytelniania wniosków inicjowanych przez XMLHttpRequest jest kontrolowany przez atrybut withCredentials.

W przypadku żądania zawierającego poświadczenia, przeglądarki nie zezwalają na dostęp do kodu JavaScript interfejsu użytkownika, jeśli wartość nagłówka odpowiedzi Access-Control-Allow-Origin wynosi *. Zamiast tego, wartość w tym przypadku musi dokładnie pasować do kodu źródłowego interfejsu, http://127.0.0.1:3000.

Zobacz wnioski i Karty kredytowe w artykule MDN HTTP access control (CORS).

Jeśli sterujesz serwerem, do którego wysyłasz żądanie, powszechnym sposobem radzenia sobie z tym przypadkiem jest skonfigurowanie serwera tak, aby przyjmował wartość nagłówka żądania Origin, A echo / odzwierciedlał to z powrotem do wartości nagłówka odpowiedzi Access-Control-Allow-Origin; np. z nginx:

add_header Access-Control-Allow-Origin $http_origin

Ale to tylko przykład; inne (web) systemy serwerowe zapewniają podobne sposoby echo wartości pochodzenia.


Używam Chrome. Próbowałem również użyć wtyczki Chrome CORS

Wtyczka Chrome CORS najwyraźniej po prostu wstrzykuje nagłówek Access-Control-Allow-Origin: * do odpowiedzi, którą widzi przeglądarka. Jeśli wtyczka byłaby mądrzejsza, to ustawiłaby wartość fałszywego nagłówka odpowiedzi Access-Control-Allow-Origin na rzeczywiste pochodzenie Twojej nakładki Kod JavaScript, http://127.0.0.1:3000.

Więc unikaj używania tej wtyczki, nawet do testowania. To tylko odwrócenie uwagi. Aby sprawdzić, jakie odpowiedzi otrzymujesz z serwera bez filtrowania ich przez przeglądarkę, lepiej Użyj curl -H jak powyżej.


Jeśli chodzi o frontend kodu JavaScript dla zapytania fetch(…) w pytaniu:

headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
headers.append('Access-Control-Allow-Credentials', 'true');

Usuń te linie. Nagłówki Access-Control-Allow-* to nagłówki odpowiedzi. Nigdy nie chcesz ich wysyłać z prośbą. Jedyny efekt jaki będzie miał to uruchom przeglądarkę w celu przeprowadzenia inspekcji wstępnej.

 1145
Author: sideshowbarker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-07 23:03:13

Ten błąd występuje, gdy adres URL klienta i adres URL serwera nie pasują, w tym numer portu. W takim przypadku musisz włączyć usługę CORS, która jest cross origin resource sharing.

Jeśli prowadzisz usługę odpoczynku wiosennego, możesz go znaleźć w poście na bloguwsparcie CORS w Spring Framework.

Jeśli hostujesz usługę za pomocą węzła.js server then

  1. Zatrzymaj węzeł.serwer js.
  2. npm install cors --save
  3. Dodaj następujące linie do serwera.js

    var cors = require('cors')
    
    app.use(cors()) // Use this after the variable declaration
    
 122
Author: Rakesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-04 03:23:12

Problem powstał, ponieważ dodałeś następujący kod jako wniosek header in your front-end:

headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
headers.append('Access-Control-Allow-Credentials', 'true');

Te nagłówki należą do odpowiedź, nie Prośba. Więc Usuń je, w tym linię:

headers.append('GET', 'POST', 'OPTIONS');

Twoja prośba miała 'Content-Type: application/json', co wywołało tzw. inspekcję wstępną CORS. To spowodowało, że przeglądarka wysłała żądanie z metodą OPTIONS. Zobacz Kors preflight aby uzyskać szczegółowe informacje.

Dlatego w Twoim back-end , musisz obsłużyć to wstępnie podświetlone żądanie, zwracając nagłówki odpowiedzi zawierające:

Access-Control-Allow-Origin : http://localhost:3000
Access-Control-Allow-Credentials : true
Access-Control-Allow-Methods : GET, POST, OPTIONS
Access-Control-Allow-Headers : Origin, Content-Type, Accept

Oczywiście, rzeczywista składnia zależy od języka programowania, którego używasz w back-endzie.

W Twoim front-endzie powinno być tak:

function performSignIn() {
    let headers = new Headers();

    headers.append('Content-Type', 'application/json');
    headers.append('Accept', 'application/json');
    headers.append('Authorization', 'Basic ' + base64.encode(username + ":" +  password));
    headers.append('Origin','http://localhost:3000');

    fetch(sign_in, {
        mode: 'cors',
        credentials: 'include',
        method: 'POST',
        headers: headers
    })
    .then(response => response.json())
    .then(json => console.log(json))
    .catch(error => console.log('Authorization failed : ' + error.message));
}
 70
Author: Lex Soft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-22 21:20:51

W moim przypadku używam poniższego rozwiązania

Przednie lub kątowe

post(
    this.serverUrl, dataObjToPost,
    {
      headers: new HttpHeaders({
           'Content-Type':  'application/json',
         })
    }
)

Back-end (używam php)

header("Access-Control-Allow-Origin: http://localhost:4200");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header("Access-Control-Allow-Headers: Content-Type, Authorization");

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
print_r($request);
 11
Author: Harrison O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-12 02:50:57

Używanie dataType: 'jsonp' zadziałało.

   async function get_ajax_data(){
       var _reprojected_lat_lng = await $.ajax({
                                type: 'GET',
                                dataType: 'jsonp',
                                data: {},
                                url: _reprojection_url,
                                error: function (jqXHR, textStatus, errorThrown) {
                                    console.log(jqXHR)
                                },
                                success: function (data) {
                                    console.log(data);

                                    // note: data is already json type, you
                                    //       just specify dataType: jsonp
                                    return data;
                                }
                            });


 } // function               
 2
Author: hoogw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-12-15 18:24:24

Tylko moje dwa centy... w związku z tym, jak używać serwera CORS proxy, aby ominąć problemy z nagłówkiem "No Access-Control-Allow-Origin header"

Dla tych z Was, którzy pracują z php w backendzie, wdrożenie "Cors proxy" jest tak proste, jak:

  1. Utwórz plik o nazwie 'no-cors.php " o następującej treści:

    $URL = $_GET['url'];
    echo json_encode(file_get_contents($URL));
    die();
    
  2. Z przodu zrób coś w stylu:

    fetch('https://example.com/no-cors.php' + '?url=' + url)
      .then(response=>{*/Handle Response/*})`
    
 2
Author: Yair Levy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-29 21:31:22

Usuń to:

credentials: 'include',
 1
Author: Nalan Madheswaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 07:30:58

Pracowałem z SPRING REST i rozwiązałem to dodając AllowedMethods do WebMvcConfigurer.

@Value( "${app.allow.origins}" )
    private String allowOrigins;    
@Bean
public WebMvcConfigurer corsConfigurer() {
            System.out.println("allow origin: "+allowOrigins);
            return new WebMvcConfigurerAdapter() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/**")
                    //.allowedOrigins("http://localhost")
                    .allowedOrigins(allowOrigins)
                    .allowedMethods("PUT", "DELETE","GET", "POST");
                }
            };
        }
 1
Author: Jorge Dominguez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-14 05:40:44

W moim przypadku serwer WWW zablokował metodę "OPTIONS"

Sprawdź serwer WWW pod kątem metody options

Używam "webtier"

/ www / webtier / domains/[domainname]/config/fmwconfig/components/OHS/VCWeb1 / httpd.conf

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_METHOD} ^OPTIONS
  RewriteRule .* . [F]
</IfModule>

Zmień na

<IfModule mod_rewrite.c>
  RewriteEngine off
  RewriteCond %{REQUEST_METHOD} ^OPTIONS
  RewriteRule .* . [F]
</IfModule>
 1
Author: junho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Jeśli używasz NodeJS / Express jako back-end i ReactJS / axios jako front-end w środowisku deweloperskim w systemie MacOS, musisz uruchomić obie strony pod https. Poniżej jest to, co w końcu zadziałało dla mnie (po wielu godzinach głębokiego nurkowania i testowania): {]}

Krok 1: Utwórz certyfikat SSL

Po prostu wykonaj kroki z Jak uruchomić HTTPS na lokalnym środowisku programistycznym w 5 minut

Skończysz z kilkoma plikami, które będą używane jako dane uwierzytelniające do uruchomienia serwera https i ReactJS web:

server.key & server.crt

Musisz skopiować je do folderów głównych zarówno z przodu, jak i z tyłu (w środowisku produkcyjnym możesz rozważyć ich skopiowanie ./ ssh dla back-endu).

Krok 2: Konfiguracja zaplecza

Czytałem wiele odpowiedzi sugerujących użycie pakietu 'cors' lub nawet ustawienie ('Access-Control-Allow-Origin','*'), co jest jak powiedzenie: "hakerzy są mile widziani na mojej stronie". Po prostu zrób tak:

import express from 'express';
const emailRouter = require('./routes/email');  // in my case, I was sending an email through a form in ReactJS
const fs = require('fs');
const https = require('https');

const app = express();
const port = 8000;

// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests
app.all('*', (req, res, next) => {
    res.header("Access-Control-Allow-Origin", "https://localhost:3000");
    next();
});

// Routes definition
app.use('/email', emailRouter);

// HTTPS server
const credentials = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.crt')
};

const httpsServer = https.createServer(credentials, app);
httpsServer.listen(port, () => {
    console.log(`Back-end running on port ${port}`);
});

W jeśli chcesz przetestować, czy https jest OK, możesz zastąpić stałą httpsServer poniższą:

https.createServer(credentials, (req: any, res: any) => {
  res.writeHead(200);
  res.end("hello world from SSL\n");
}).listen(port, () => {
  console.log(`HTTPS server listening on port ${port}...`);
});

A następnie uzyskaj do niego dostęp z przeglądarki internetowej: https://localhost:8000/

Krok 3: Front-end setup

To jest żądanie axios z front-endu ReactJS:
    await axios.get(`https://localhost:8000/email/send`, {
        params: {/* whatever data you want to send */ },
        headers: {
            'Content-Type': 'application/json',
        }
    })

A teraz musisz uruchomić sieć ReactJS w trybie https, korzystając z danych uwierzytelniających dla SSL, które już stworzyliśmy. Wpisz to w terminalu MacOS:

HTTPS=true SSL_CRT_FILE=server.crt SSL_KEY_FILE=server.key npm start

W tym momencie wysyłasz żądanie połączenia https na porcie 3000 z twojego front-endu, aby otrzymać połączenie https na porcie 8000 przez twój back-end. CORS powinien być z tego zadowolony;)

 1
Author: Sergi Juanati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-03 19:09:49

W Nodejs, jeśli używasz routerów, upewnij się, że dodajesz Kors przed routerami. W przeciwnym razie nadal dostaniesz błąd cors. Jak poniżej:

const cors = require('cors');

const userRouter = require('./routers/user');

expressApp = express();
expressApp.use(cors());
expressApp.use(express.json());
expressApp.use(userRouter);
 0
Author: picmate 涅,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-01 19:39:54

Dodanie mode:no-cors pozwala uniknąć problemów z cors w api.

fetch(sign_in, {
        mode: 'no-cors',
        credentials: 'include',
        method: 'POST',
        headers: headers
    })
    .then(response => response.json())
    .then(json => console.log(json))
    .catch(error => console.log('Authorization failed : ' + error.message));
}
 0
Author: Puttamarigowda M S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-27 10:42:39

Spróbuj dodać wszystkie te nagłówki w poniższym kodzieprzed każdą trasą definiujesz w aplikacji, a nie po trasach

app.use((req, res, next) =>{
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers','Origin, X-Requested-With, Content-Type,Accept, Authortization');  
res.setHeader('Acces-Control-Allow-Methods','GET, POST, PATCH, DELETE');
 0
Author: Rafia Zafar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-26 20:17:12

Cześć @ daniel.lozynski . Access-Control-Allow-Origin jest jednym z najgorszych problemów, z jakimi borykają się twórcy stron internetowych podczas pracy z interfejsami API, a ja pracuję nad rozwiązaniami od dłuższego czasu.

Jednym ze sposobów na pozbycie się Access-Control-Allow-Origin jest użycie proxy. Oczywiście, proxy czasami mają swoje własne problemy.

  1. jednym z ich problemów jest to, że spowalnia Twoje prośby.
  2. kolejnym problemem jest to, że niektóre z tych proxy tworzą małą liczbę próśb do Ciebie w ciągu dnia, a czasami zostawiają cię z na Błąd. Oczywiście problem ten jest eliminowany przez przełączanie między serwerami proxy.
Są to jednak tylko chwilowe problemy i pojawiają się tylko podczas rozwoju.

Poniżej znajduje się lista najlepszych proxy jakie kiedykolwiek znaleziono.

  1. https://cors-anywhere.herokuapp.com/
  2. https://cors-proxy.htmldriven.com/?url=
  3. https://thingproxy.freeboard.io/fetch/
  4. https://thingproxy.freeboard.io
  5. http://thingproxy.freeboard.io
  6. http://www.whateverorigin.org/get?url=
  7. http://alloworigin.com/get?url=
  8. https://api./ align = "left" / win / get?url=
  9. https://yacdn.org/proxy/

Ale jak korzystać z tych proxy?

Możesz łatwo wyposażyć API w proxy i pozbyć się Access-Control-Allow-Origin, dodając dowolny z tych adresów przed swoim adresem IP.

rozważ kilka przykładów poniżej:

Ważne:

Korzystanie z proxy jest ograniczone do interfejsów API online. I nie można używać proxy w lokalnych API. W dalszej części powiem ci, abyś odpowiedział również na lokalne API...

Więc co ja myślisz, że to najlepsze rozwiązanie?

Ostatnio natknąłem się na bardzo dobre rozszerzenie Chrome, które do tej pory nie miało dla mnie tych dwóch problemów z proxy i jestem z niego bardzo zadowolony, ponieważ go używałem.

Ale jedynym problemem z użyciem tej wtyczki jest to, że nie można już debugować projektu na telefonie komórkowym z adresem IP. To dlatego, że ta wtyczka tworzy tylko proxy w przeglądarce i nie wpływa już na transmisję danych przez kabel przez IP.

Możesz znaleźć i zainstalować tę wtyczkę z tego linku.

Allow CORS: Access-Control-Allow-Origin

Możesz po prostu zainstalować to rozszerzenie w przeglądarce Chrome i dobrze się bawić...!

Używanie tej wtyczki jest bardzo, bardzo proste i wystarczy ją zainstalować, a następnie aktywować. Jeśli jednak masz z tym problem, na stronie tej wtyczki w 'rozszerzenia Chrome', znajduje się film z YouTube, który całkowicie rozwiąże Twoje problemy, oglądając go.

Ponieważ moją ulubioną przeglądarką jest rozwijanie Chrome, nie szukałem rozwiązań dla innych rozszerzeń. Więc Jeśli używasz Chrome, Ta wtyczka będzie również bardzo przydatna dla Ciebie.

 -1
Author: hrghafoori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-05 11:04:15