CURL get permission denied
-
Hi Leute
ich setze mit CURL ( in C++ ) einen Request ab, um eine bestimmte URL zu erhalten.
Das sieht ungefähr so aus:
CURL* curl = curl_easy_init(); if ( curl ) { curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, &WriterFunction ); curl_easy_setopt( curl, CURLOPT_NOPROGRESS, 1L ); curl_easy_setopt( curl, CURLOPT_FOLLOWLOCATION, 1L ); curl_easy_setopt( curl, CURLOPT_FILE, &dest ); curl_easy_setopt( curl, CURLOPT_TIMEOUT, 1000 ); curl_easy_setopt( curl, CURLOPT_URL, url.c_str() ); CURLcode code = curl_easy_perform( curl ); url_easy_cleanup( curl ); return code == CURLE_OK; } return false;
Nun ist es so, dass meine URL zwar im Firefox funktioniert, das heißt, die Seite angezeigt wird, aber wenn ich das gleiche mit CURL machen will, bekomme ich von deren Apache ein "Permission denied" zurück.
Was also mache ich falsch, was Firefox richtig macht? Muss ich vielleicht irgendeine Art von Authentificator mitsenden, oder könnten andere Einstellungen bei mir falsch sein?
-
Das kann viel sein.
zB koennte der Server bestimmte User-Agents verlangen oder Referer oder Cookies oder oder oder.
Am besten du zeichnest im FireFox genau auf welche Header gesendet werden und kopierst diese.
-
Möchte jetzt nicht lästig klingen, aber ein einfaches "curl http://foo.bar/baz" aus deiner Shell hast du schon versucht? Ich würde die libcurl erst benutzen, wenn das einwandfrei funktioniert.
-
Keine Sorge nman, ich bin für jeden Tipp dankbar Ich werde beide Vorschläge mal versuchen.
Falls noch mehr Ideen vorliegen, oder sogar jemand weiß, welche Header der Firefox sendet, bin ich stets offen dafür
-
@nman: deinen vorschlag habe ich bereits umgesetzt. Der einfache CURl-Aufruf aus der Shell funktioniert.
Ich suche jetzt zunächst mal nach den standardmäßigen CURl-Settings... vielleicht habe ich etwas wichtiges vergessen.
-
Kopier mal das Minimalbeispiel aus der Manpage/von der Website oae.
Wie checkst du denn auf "permission denied"? Kannst du dir die Access-Logs des Webservers ansehen?