문제

I was wondering if it is possible to use curl to only show the content-type of the response header.

I want to check if the content-type is text/html for example before downloading instate of downloading the file and then find out it is application/pdf.

I used the example below in the hope that it would return the document if it is valid for me and else do nothing or something! The sample below just prints the full content of the page.

curl -F "type=text/html" www.google.nl

But If i do something like the example below it still downloads the whole thing, and I don't think that is right...

curl -F "type=text/html" http://www.axmag.com/download/pdfurl-guide.pdf

Many thanks :D

도움이 되었습니까?

해결책

Option -F is for forms. Instead you want to send a HEAD request for retrieving only the response header without the response body by using option -I.

To display an URL's content type:

curl -s -I www.google.nl | grep -i "^Content-Type:"

Here option -s is added for silent mode for excluding the progress meter and error messages.

You can also specify the Accept header in your HTTP request. This header is used to accept only specific content types:

curl -s -H "Accept: text/html" http://www.axmag.com/download/pdfurl-guide.pdf

But the disadvantage is that most webservers will serve you an error page which also has the content type text/html. Hence you will still get a HTML file.

다른 팁

You can use the "-w" option too, with the "content-type" parameter:

curl -s -o /dev/null -w '%{content_type}' 'google.com'

Where:

-s: Silent mode, dont send any more to screen

-o: Output to file, and in this case, sends to /dev/null

-w: Where you show only with you want, in this case, content type

Reference: https://curl.haxx.se/docs/manpage.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top