📄 faq
字号:
configure. Make sure that you remove the config.cache file before you rerun configure with the new flags. 2.2. Does curl work/build with other SSL libraries? Curl has been written to use OpenSSL, although there should not be much problems using a different library. If anyone does "port" curl to use a different SSL library, we are of course very interested in getting the patch! 2.3. Where can I find a copy of LIBEAY32.DLL? That is an OpenSSL binary built for Windows. Curl uses OpenSSL to do the SSL stuff. The LIBEAY32.DLL is what curl needs on a windows machine to do https://. Check out the curl web site to find accurate and up-to-date pointers to recent OpenSSL DLLs and other binary packages. 2.4. Does cURL support Socks (RFC 1928) ? There is limited support for SOCKS5 for curl built with IPv6 support disabled.3. Usage problems 3.1. curl: (1) SSL is disabled, https: not supported If you get this output when trying to get anything from a https:// server, it means that the configure script couldn't find all libs and include files it requires for SSL to work. If the configure script fails to find them, curl is simply built without SSL support. To get the https:// support into a curl that was previously built but that reports that https:// is not supported, you should dig through the document and logs and check out why the configure script doesn't find the SSL libs and/or include files. Also, check out the other paragraph in this FAQ labeled "configure doesn't find OpenSSL even when it is installed". 3.2. How do I tell curl to resume a transfer? Curl supports resumed transfers both ways on both FTP and HTTP. Try the -C option. 3.3. Why doesn't my posting using -F work? You can't simply use -F or -d at your choice. The web server that will receive your post assumes one of the formats. If the form you're trying to "fake" sets the type to 'multipart/form-data', then and only then you must use the -F type. In all the most common cases, you should use -d which then causes a posting with the type 'application/x-www-form-urlencoded'. This is described in some detail in the MANUAL and TheArtOfHttpScripting documents, and if you don't understand it the first time, read it again before you post questions about this to the mailing list. Also, try reading through the mailing list archives for old postings and questions regarding this. 3.4. How do I tell curl to run custom FTP commands? You can tell curl to perform optional commands both before and/or after a file transfer. Study the -Q/--quote option. Since curl is used for file transfers, you don't use curl to just perform FTP commands without transferring anything. Therefore you must always specify a URL to transfer to/from even when doing custom FTP commands. 3.5. How can I disable the Pragma: nocache header? You can change all internally generated headers by adding a replacement with the -H/--header option. By adding a header with empty contents you safely disable that one. Use -H "Pragma:" to disable that specific header. 3.6. Does curl support ASP, XML, XHTML or HTML version Y? To curl, all contents are alike. It doesn't matter how the page was generated. It may be ASP, PHP, Perl, shell-script, SSI or plain HTML-files. There's no difference to curl and it doesn't even know what kind of language that generated the page. See also item 3.14 regarding javascript. 3.7. Can I use curl to delete/rename a file through FTP? Yes. You specify custom FTP commands with -Q/--quote. One example would be to delete a file after you have downloaded it: curl -O ftp://download.com/coolfile -Q '-DELE coolfile' 3.8 How do I tell curl to follow HTTP redirects? Curl does not follow so-called redirects by default. The Location: header that informs the client about this is only interpreted if you're using the -L/--location option. As in: curl -L http://redirector.com 3.9 How do I use curl in my favorite programming language? There exist many language interfaces/bindings for curl that integrates it better with various languages. If you are fluid in a script language, you may very well opt to use such an interface instead of using the command line tool. Find out more about which languages that support curl directly, and how to install and use them, in the libcurl section of the curl web site: http://curl.haxx.se/libcurl/ In February 2003, there are interfaces available for the following languages: Basic, C, C++, Cocoa, Dylan, Euphoria, Java, Lua, Object-Pascal, Pascal, Perl, PHP, PostgreSQL, Python, Rexx, Ruby, Scheme and Tcl. By the time you read this, additional ones may have appeared! 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? Curl adheres to the HTTP spec, which basically means you can play with *any* protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and XML-RPC are all such ones. You can use -X to set custom requests and -H to set custom headers (or replace internally generated ones). Using libcurl is of course just as fine and you'd just use the proper library options to do the same. 3.11 How do I POST with a different Content-Type? You can always replace the internally generated headers with -H/--header. To make a simple HTTP POST with text/xml as content-type, do something like: curl -d "datatopost" -H "Content-Type: text/xml" [URL] 3.12 Why do FTP specific features over HTTP proxy fail? Because when you use a HTTP proxy, the protocol spoken on the network will be HTTP, even if you specify a FTP URL. This effectively means that you normally can't use FTP specific features such as FTP upload and FTP quote etc. There is one exception to this rule, and that is if you can "tunnel through" the given HTTP proxy. Proxy tunneling is enabled with a special option (-p) and is generally not available as proxy admins usually disable tunneling to other ports than 443 (which is used for HTTPS access through proxies). 3.13 Why does my single/double quotes fail? To specify a command line option that includes spaces, you might need to put the entire option within quotes. Like in: curl -d " with spaces " url.com or perhaps curl -d ' with spaces ' url.com Exactly what kind of quotes and how to do this is entirely up to the shell or command line interpreter that you are using. For most unix shells, you can more or less pick either single (') or double (") quotes. For Windows/DOS prompts I believe you're forced to use double (") quotes. Please study the documentation for your particular environment. Examples in the curl docs will use a mix of both these ones as shown above. You must adjust them to work in your environment. Remember that curl works and runs on more operating systems than most single individuals have ever tried. 3.14 Does curl support javascript or pac (automated proxy config)? Many web pages do magic stuff using embedded javascript. Curl and libcurl have no built-in support for that, so it will be treated just like any other contents. .pac files are a netscape invention and are sometimes used by organizations to allow them to differentiate which proxies to use. The .pac contents is just a javascript program that gets invoked by the browser and that returns the name of the proxy to connect to. Since curl doesn't support javascript, it can't support .pac proxy configuration either. Some work-arounds usually suggested to overcome this javascript dependency: - Depending on the javascript complexity, write up a script that translates it to another language and execute that. - Read the javascript code and rewrite the same logic in another language. - Implement a javascript interpreted, people have successfully used the Mozilla javascript engine in the past. - Ask your admins to stop this, for a static proxy setup or similar.4. Running Problems 4.1. Problems connecting to SSL servers. It took a very long time before we could sort out why curl had problems to connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. The error sometimes showed up similar to: 16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233: It turned out to be because many older SSL servers don't deal with SSLv3 requests properly. To correct this problem, tell curl to select SSLv2 from the command line (-2/--sslv2). There has also been examples where the remote server didn't like the SSLv2 request and instead you had to force curl to use SSLv3 with -3/--sslv3. 4.2. Why do I get problems when I use & or % in the URL? In general unix shells, the & letter is treated special and when used, it runs the specified command in the background. To safely send the & as a part of a URL, you should quote the entire URL by using single (') or double (") quotes around it. An example that would invoke a remote CGI that uses &-letters could be: curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl' In Windows, the standard DOS shell treats the %-letter specially and you need to use TWO %-letters for each single one you want to use in the URL. Also note that if you want the literal %-letter to be part of the data you pass in a POST using -d/--data you must encode it as '%25' (which then also needs the %-letter doubled on Windows machines). 4.3. How can I use {, }, [ or ] to specify multiple URLs? Because those letters have a special meaning to the shell, and to be used in a URL specified to curl you must quote them. An example that downloads two URLs (sequentially) would do: curl '{curl,www}.haxx.se' To be able to use those letters as actual parts of the URL (without using them for the curl URL "globbing" system), use the -g/--globoff option: curl -g 'www.site.com/weirdname[].html' 4.4. Why do I get downloaded data even though the web page doesn't exist? Curl asks remote servers for the page you specify. If the page doesn't exist at the server, the HTTP protocol defines how the server should respond and that means that headers and a "page" will be returned. That's simply how HTTP works. By using the --fail option you can tell curl explicitly to not get any data if the HTTP return code doesn't say success. 4.5 Why do I get return code XXX from a HTTP server? RFC2616 clearly explains the return codes. This is a short transcript. Go read the RFC for exact details: 4.5.1 "400 Bad Request"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -