what are the reasons for when using cURL form linux server to access the site return an error. but opening this site in chrome succeeds.
Asked
Active
Viewed 2.8k times
18
-
1There are a few reasons, but off the top of my head, I'd suggest that it may be because your cURL call doesn't include headers (or cookies) that the page is expecting to have in the request. If you open the url in a new private window in your browser, what happens? – daf Jul 02 '16 at 13:01
-
1Had same problem. That was because of user agent and compression gzip are not in headers. – Jul 02 '16 at 13:01
-
can you provide `curl request` you made with error produced by it. – Devavrata Jul 02 '16 at 13:02
-
I think the problem is with SSL error. Can anyone tell me how to fix it on client side and also server side – john Jul 02 '16 at 14:00
-
@daf works with private window in the browser – john Jul 02 '16 at 15:17
4 Answers
12
Look browsers headers while sending your request, and add same headers to cURL request. Some servers needs some headers that browsers sends default but not cURL.

tanaydin
- 5,171
- 28
- 45
-
1
-
2
-
1I had to include user-agent and accept. This actually fixed an issue I had with Apache HttpClient. The exceptions weren't particularly useful, so I was scratching my head over this for days. Thanks. – J. Lin Apr 18 '20 at 15:35
1
I had 301 Moved Permanently
error on curl but was working on browser.
But when I looked deeper there's Location
to moved to location, which would be working. This coulde be when the server is using TLS.
$ curl -v http://www.shaharma.com/location/v1/US/zipcode/98104
* Trying 172.111.99.100...
* TCP_NODELAY set
* Connected to www.shaharma.com (172.111.99.100) port 80 (#0)
> GET /location/v1/US/zipcode/98104 HTTP/1.1
> Host: www.shaharma.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Content-Length: 0
< Location: https://www.shaharma.com/location/v1/US/zipcode/98104
< Cache-Control: max-age=0
< Expires: Fri, 01 Dec 2017 19:40:14 GMT
< Date: Fri, 01 Dec 2017 19:40:14 GMT
< Connection: Keep-Alive
< Set-Cookie: UID=52679eee-c06c-49fc-893a-69fd7e46bad0; expires=Fri, 25-Feb-2028 19:40:14 GMT; path=/; domain=.shaharma.com
< Set-Cookie: SID=1ada5fa9-0ace-4f4e-b75b-7a756b8da934; path=/; domain=.shaharma.com
< Set-Cookie: shaharma_loc_lb=p-loc-w; expires=Fri, 01-Dec-2017 19:50:14 GMT; path=/; domain=.shaharma.com
< Set-Cookie: bby_rdp=l; expires=Sat, 02-Dec-2017 19:40:14 GMT; path=/; domain=.shaharma.com
<
* Connection #0 to host www.shaharma.com left intact
Also, you can goto brower and see the network which will have headers information.

prayagupa
- 30,204
- 14
- 155
- 192
0
For me it was because I configured the certificate generated with acme.sh in nginx like this:
ssl_certificate /root/.acme.sh/my.domain.com_ecc/my.domain.com.cer;
ssl_certificate_key /root/.acme.sh/my.domain.com_ecc/my.domain.com.key;
But I needed to configure it using the fullchain certificate:
ssl_certificate /root/.acme.sh/my.domain.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/my.domain.com_ecc/my.domain.com.key;

gitaarik
- 42,736
- 12
- 98
- 105