in reply to Re: Uploading files to a HTTPS server - 501 error
in thread Uploading files to a HTTPS server - 501 error

I am running the perl script via a shell script which just calls the perl script. This works fine from the command line. If I take the actual post command out of the perl script, then it also works fine when being called from the browser (i.e. all messages are displayed correcty and the script completes). However, when the post is run via the browser, I get the 501 error.

The web server is on the same system as the scripts. The browser is on a PC.

I am wondering if it is having problems loading the Crypt::SSLeay module when run from the browser. If i explicitly load this with "use", then the program crashes with no error messages when run from the browser, but works when run from the command line.

This is how the shell script is called via the browser

htp.formOpen(curl=><address>script_name.sh? file_name,cmethod=>'POST'); htp.formSubmit(NULL,'Upload Text File to Secure Server');
The script_name is the shell script which calls the perl script, and file_name is the file parameter to upload. The perl script gets the file_name paramter passed to it OK, as it can print it out

Maybe there is a better way of doing this directly from the browser, or maybe something needs configuring on the browser for https?

Thanks

Jonathan

Replies are listed 'Best First'.
Re^3: Uploading files to a HTTPS server - 501 error
by iburrell (Chaplain) on Jun 15, 2004 at 22:41 UTC
    What are you trying to accomplish? It looks like you are running JavaScript in the browser that posts to the shell script on the web server. I am going to guess that the shell script is not a CGI script. I am also going to bet that web server is not configured to run shell scripts as CGI scripts and gives the 501 error because it can't POST to them.

    It is possible to have a CGI script (usually written all in Perl), that accepts a file upload and then POSTs it to another secure web server. I guess it is also possible to have a CGI script on a web server that POSTs a local file to a secure web server but I am not sure why you would want do that. If posting from a browser to the secure site is working, why do you need the script using LWP?

      Got it working now!! - Interesting solution:-

      Remember - the perl script was transferring the file correctly when run from the command line, but when the perl script was invoked from the browser I would get the error:

      "501 Protocol scheme 'https' is not supported (Crypt::SSLeay not installed)"

      Solution:- add the -T option (taint mode) to the perl script, so first line:

      #!/usr/bin/perl -w

      became:

      #!/usr/bin/perl -wT

      Not sure why this works - but it does!

      Thanks for your help

      Jonathan