in reply to Uploading files to a HTTPS server - 501 error

How are running from the browser? The first snippet of code looks like JavaScript. Where is the Perl script running from? You can't run the Perl script from inside a browser with JavaScript. I am guessing that you can use JavaScript to make the browser do the upload.
  • Comment on Re: Uploading files to a HTTPS server - 501 error

Replies are listed 'Best First'.
Re^2: Uploading files to a HTTPS server - 501 error
by Anonymous Monk on Jun 15, 2004 at 12:18 UTC
    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

      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