Kaip galite ištaisyti CORS užklausą su CURL?

Kaip galite ištaisyti CORS užklausas naudojant CURL? Iki šiol nepavyko rasti būdų, kaip „imituoti“ prašymą prieš skrydį.

218
29 авг. nustatė themihai 29 rug . 2012-08-29 11:44 '12 at 11:44 2012-08-29 11:44
@ 4 atsakymai

Čia galite ištaisyti CORS užklausas su garbanomis.

Reguliarus CORS užklausos siuntimas naudojant cUrl:

 curl -H "Origin: http://example.com" --verbose \ https://www.googleapis.com/discovery/v1/apis?fields= 

-H "Origin: http://example.com" yra trečiosios šalies domenas, pateikiantis užklausą. Pakeiskite savo domene.

--verbose vėliavoje rodomas visas atsakymas, kad galėtumėte matyti užklausos ir atsakymo antraštes.

Pirmiau nurodytas URL yra pavyzdinė užklausa į „Google API“, kuri palaiko CORS, tačiau galite pakeisti bet kurį bandomą URL.

Atsakyme turėtų būti „ Access-Control-Allow-Origin antraštė.

Pirminės patvirtinimo užklausos siuntimas su cUrl:

 curl -H "Origin: http://example.com" \ -H "Access-Control-Request-Method: POST" \ -H "Access-Control-Request-Headers: X-Requested-With" \ -X OPTIONS --verbose \ https://www.googleapis.com/discovery/v1/apis?fields= 

Tai panaši į įprastą CORS prašymą su keliais papildymais:

-H vėliavos siunčia papildomus užklausos antraštes serveriui prieš skrydį.

-X OPTIONS vėliava rodo, kad tai yra HTTP OPTIONS užklausa.

Jei patikrinimas buvo sėkmingas, atsakymas turėtų apimti „ Access-Control-Allow-Origin , „ Access-Control-Allow-Methods ir „ Access-Control-Allow-Headers atsako antraštes. Jei pirmtako užklausa nebuvo sėkminga, šios antraštės neturėtų būti rodomos arba HTTP atsakymas nebus 200.

Taip pat galite nurodyti papildomas antraštes, pvz., User-Agent , su -H vėliava.

384
29 авг. atsakymas pateikiamas monsur 29 rug . 2012-08-29 16:42 '12 at 16:42 2012-08-29 16:42

Atnaujintas atsakymas, apimantis daugumą atvejų.

 curl -H "Access-Control-Request-Method: GET" -H "Origin: http://localhost" --head http://www.example.com/ 
  1. Pakeiskite http: // localhost URL, kurį norite patikrinti.
  2. Jei atsakymas apima „ Access-Control-Allow-* tada jūsų išteklius palaiko CORS.

Alternatyvaus atsakymo pagrindimas

Kartais klausiu šio klausimo, o priimtas atsakymas niekada nereikalingas. Pirma, išspausdinamas atsakymo kūnas su daugybe teksto. Įrašant ---head rodomi tik antraštės. Antra, bandant S3 URL, turime pateikti papildomą -H "Access-Control-Request-Method: GET" antraštę.

Tikimės, kad tai sutaupys laiko.

22
02 дек. Atsakymą pateikė Vilius Paulauskas. 2017-12-02 19:22 '17, 19:22 pm 2017-12-02 19:22

„Bash“ „corstest“ scenarijus veikia man. Tai grindžiama pirmiau pateiktomis birželio pastabomis.

naudoti

Corstest [-v] URL

Pavyzdžiai

 ./corstest https://api.coindesk.com/v1/bpi/currentprice.json https://api.coindesk.com/v1/bpi/currentprice.json Access-Control-Allow-Origin: * 

teigiamas rezultatas rodomas žaliai

 ./corstest https://github.com/IonicaBizau/jsonrequest https://github.com/IonicaBizau/jsonrequest does not support CORS you might want to visit https://enable-cors.org/ to find out how to enable CORS 

neigiami rezultatai rodomi raudonai ir mėlynai

-v parinktis parodys visą posūkio antraštę

Corstest

1
20 сент. Atsakymas, kurį pateikė Wolfgang Fahl 20 rugsėjis 2018-09-20 18:51 '18, 18:51 pm 2018-09-20 18:51

Atrodo, kad jis veikia tik:

curl -I http://example.com

Ieškokite „ Access-Control-Allow-Origin: * grįžtose antraštėse

0
09 янв. Atsakymą pateikė MalcolmOcean Jan 09 2019-01-09 03:41 '19 , 15:41 pm 2019-01-09 03:41

Kiti klausimai apie arba klausimo pateikimas