with test origin habilitar control chrome allow curl cors

curl - origin - test cors



¿Cómo puedes depurar una solicitud CORS con cURL? (3)

¿Cómo puedes depurar las solicitudes CORS usando cURL? Hasta ahora no he podido encontrar ninguna forma de "simular" la solicitud de verificación previa.


Respuesta actualizada que cubre la mayoría de los casos.

curl -H "Access-Control-Request-Method: GET" -H "Origin: http://localhost" --head http://www.example.com/

  1. Reemplace http: // localhost con la URL que desea probar.
  2. Si la respuesta incluye Access-Control-Allow-* , su recurso es compatible con CORS.

Razonamiento para respuesta alternativa

Busco en Google esta pregunta de vez en cuando y la respuesta aceptada nunca es lo que necesito. Primero imprime el cuerpo de la respuesta que es mucho texto. Añadiendo ---head salidas de ---head solo encabezados. En segundo lugar, al probar las URL de S3, debemos proporcionar un encabezado adicional -H "Access-Control-Request-Method: GET" .

Espero que esto ahorre tiempo.


Aquí es cómo puede depurar las solicitudes CORS utilizando curl.

Enviando una solicitud CORS regular usando cUrl:

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

El -H "Origin: http://example.com" es el dominio de terceros que realiza la solicitud. Sustituye en cualquiera que sea tu dominio.

El indicador --verbose imprime la respuesta completa para que pueda ver los encabezados de solicitud y respuesta.

La URL que utilizo anteriormente es una solicitud de muestra de una API de Google que admite CORS, pero puede sustituirla en la URL que esté probando.

La respuesta debe incluir el encabezado Access-Control-Allow-Origin .

Enviando una solicitud de verificación previa utilizando 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=

Esto parece similar a la solicitud normal de CORS con algunas adiciones:

Los indicadores -H envían encabezados de solicitud de verificación previa adicionales al servidor

El indicador -X OPTIONS indica que se trata de una solicitud de OPCIONES HTTP.

Si la solicitud de verificación previa es exitosa, la respuesta debe incluir los Access-Control-Allow-Headers respuesta Access-Control-Allow-Origin , Access-Control-Allow-Methods y Access-Control-Allow-Headers . Si la solicitud de verificación previa no tuvo éxito, estos encabezados no deberían aparecer, o la respuesta HTTP no será 200.

También puede especificar encabezados adicionales, como User-Agent , utilizando el -H .


El guión de bash "corstest" a continuación funciona para mí. Se basa en Jun comentario Jun anterior.

uso

corstest [-v] url

ejemplos

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

el resultado positivo se muestra en verde

./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

El resultado negativo se muestra en rojo y azul.

La opción -v mostrará los encabezados de rizo completos

corstest

#!/bin/bash # WF 2018-09-20 # https://.com/a/47609921/1497139 #ansi colors #http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html blue=''/033[0;34m'' red=''/033[0;31m'' green=''/033[0;32m'' # ''/e[1;32m'' is too bright for white bg. endColor=''/033[0m'' # # a colored message # params: # 1: l_color - the color of the message # 2: l_msg - the message to display # color_msg() { local l_color="$1" local l_msg="$2" echo -e "${l_color}$l_msg${endColor}" } # # show the usage # usage() { echo "usage: [-v] $0 url" echo " -v |--verbose: show curl result" exit 1 } if [ $# -lt 1 ] then usage fi # commandline option while [ "$1" != "" ] do url=$1 shift # optionally show usage case $url in -v|--verbose) verbose=true; ;; esac done if [ "$verbose" = "true" ] then curl -s -X GET $url -H ''Cache-Control: no-cache'' --head fi origin=$(curl -s -X GET $url -H ''Cache-Control: no-cache'' --head | grep Access-Control) if [ $? -eq 0 ] then color_msg $green "$url $origin" else color_msg $red "$url does not support CORS" color_msg $blue "you might want to visit https://enable-cors.org/ to find out how to enable CORS" fi