두 개의 웹 서비스가 있습니다
https://localhost/svc/auth 먼저 인증 헤더로 호출한 다음 쿠키를 얻습니다.
https://localhost/svc/catalog/1234첫 번째 호출에서 설정된 쿠키를 제공하여 호출합니다.
다음과 같이 cURL을 사용하여 "1234" 디렉터리를 얻으려고 합니다.
curl -u Username:Password -s -i -X GET 'http://localhost/svc/auth' -c /tmp/site-cookie.txt
curl -b /tmp/site-cookie.txt -s -i -X GET 'http://localhost/svc/article-stock/v1/car/CRH4203052?sid=esi&channel=str&site=0148'
하지만 쿠키 경로가 다음과 같이 설정되어 있으므로 이는 작동하지 않습니다.
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
localhost FALSE /svc/auth FALSE 0 MYCOOKIE VXNlcm5hbWU6RU5DKFFva0VSaDdaMXpKTHRYRHJIUzlvaXVuakVpbURHYmsyaDFRUXlvclA4RD0p
웹 서비스 개발자에게 쿠키의 경로를 변경하도록 요청할 수 있다는 것을 알고 있지만 cURL이 이러한 경로를 무시하거나 저장할 수 없는지 궁금합니다.
답변1
서버가 원하는 것이 무엇인지 확신이 있다면 쿠키를 받은 후 쿠키를 편집하여 쿠키가 적용되는 URL을 확장할 수 있습니다. 예를 들어 첫 번째 컬 명령 뒤에 sed를 추가하여 URL 경로( /auth
)의 후행 부분을 제거합니다.
sed -i -e '/^localhost/s|/auth||' /tmp/site-cookie.txt
/svc
그런 다음 이제 URL()의 시작 부분과 일치하므로 쿠키를 전달하는 두 번째 컬을 실행합니다 .