Blame docs/manual/mod/mod_isapi.html.en

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
Packit 90a5c9
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>mod_isapi - Apache HTTP Server Version 2.4</title>
Packit 90a5c9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
Packit 90a5c9
<script src="../style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body>
Packit 90a5c9
Packit 90a5c9

Modules | Directives | FAQ | Glossary | Sitemap

Packit 90a5c9

Apache HTTP Server Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP Server > Documentation > Version 2.4 > Modules
Packit 90a5c9
Packit 90a5c9

Apache Module mod_isapi

Packit 90a5c9
Packit 90a5c9

Available Languages:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ko 

Packit 90a5c9
Packit 90a5c9
Description:ISAPI Extensions within Apache for Windows
Packit 90a5c9
Status:Base
Packit 90a5c9
Module Identifier:isapi_module
Packit 90a5c9
Source File:mod_isapi.c
Packit 90a5c9
Compatibility:Win32 only
Packit 90a5c9

Summary

Packit 90a5c9
Packit 90a5c9
    

This module implements the Internet Server extension API. It

Packit 90a5c9
    allows Internet Server extensions (e.g. ISAPI .dll
Packit 90a5c9
    modules) to be served by Apache for Windows, subject to the
Packit 90a5c9
    noted restrictions.

Packit 90a5c9
Packit 90a5c9
    

ISAPI extension modules (.dll files) are written by third

Packit 90a5c9
    parties. The Apache Group does not author these modules, so we
Packit 90a5c9
    provide no support for them. Please contact the ISAPI's author
Packit 90a5c9
    directly if you are experiencing problems running their ISAPI
Packit 90a5c9
    extension. Please do not post such problems to
Packit 90a5c9
    Apache's lists or bug reporting pages.

Packit 90a5c9
Packit 90a5c9
Support Apache!

Topics

Packit 90a5c9
    Packit 90a5c9
  • Usage
  • Packit 90a5c9
  • Additional Notes
  • Packit 90a5c9
  • Programmer's Journal
  • Packit 90a5c9

    Directives

    Packit 90a5c9
      Packit 90a5c9
    • ISAPIAppendLogToErrors
    • Packit 90a5c9
    • ISAPIAppendLogToQuery
    • Packit 90a5c9
    • ISAPICacheFile
    • Packit 90a5c9
    • ISAPIFakeAsync
    • Packit 90a5c9
    • ISAPILogNotSupported
    • Packit 90a5c9
    • ISAPIReadAheadBuffer
    • Packit 90a5c9
      Packit 90a5c9

      Bugfix checklist

      See also

      Packit 90a5c9
        Packit 90a5c9
      • Comments
      • Packit 90a5c9
        top
        Packit 90a5c9
        Packit 90a5c9

        Usage

        Packit 90a5c9
        Packit 90a5c9
            

        In the server configuration file, use

        Packit 90a5c9
            the AddHandler directive to
        Packit 90a5c9
            associate ISAPI files with the isapi-handler handler, and map
        Packit 90a5c9
            it to them with their file extensions. To enable any .dll file to be
        Packit 90a5c9
            processed as an ISAPI extension, edit the httpd.conf file and add the
        Packit 90a5c9
            following line:

        Packit 90a5c9
            
        AddHandler isapi-handler .dll
        Packit 90a5c9
        Packit 90a5c9
        Packit 90a5c9
            
        In older versions of the Apache server,
        Packit 90a5c9
            isapi-isa was the proper handler name, rather than
        Packit 90a5c9
            isapi-handler. As of 2.3 development versions of the Apache
        Packit 90a5c9
            server, isapi-isa is no longer valid. You will need to
        Packit 90a5c9
            change your configuration to use isapi-handler
        Packit 90a5c9
            instead.
        Packit 90a5c9
        Packit 90a5c9
            

        There is no capability within the Apache server to leave a

        Packit 90a5c9
            requested module loaded. However, you may preload and keep a
        Packit 90a5c9
            specific module loaded by using the following syntax in your
        Packit 90a5c9
            httpd.conf:

        Packit 90a5c9
            
        ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
        Packit 90a5c9
        Packit 90a5c9
        Packit 90a5c9
            

        Whether or not you have preloaded an ISAPI extension, all

        Packit 90a5c9
            ISAPI extensions are governed by the same permissions and
        Packit 90a5c9
            restrictions as CGI scripts. That is, Options ExecCGI must be set for the
        Packit 90a5c9
            directory that contains the ISAPI .dll file.

        Packit 90a5c9
        Packit 90a5c9
            

        Review the Additional Notes and the Programmer's Journal for additional details

        Packit 90a5c9
            and clarification of the specific ISAPI support offered by
        Packit 90a5c9
            mod_isapi.

        Packit 90a5c9
        top
        Packit 90a5c9
        Packit 90a5c9

        Additional Notes

        Packit 90a5c9
        Packit 90a5c9
            

        Apache's ISAPI implementation conforms to all of the ISAPI

        Packit 90a5c9
            2.0 specification, except for some "Microsoft-specific"
        Packit 90a5c9
            extensions dealing with asynchronous I/O. Apache's I/O model
        Packit 90a5c9
            does not allow asynchronous reading and writing in a manner
        Packit 90a5c9
            that the ISAPI could access. If an ISA tries to access
        Packit 90a5c9
            unsupported features, including async I/O, a message is placed
        Packit 90a5c9
            in the error log to help with debugging. Since these messages
        Packit 90a5c9
            can become a flood, the directive ISAPILogNotSupported
        Packit 90a5c9
            Off exists to quiet this noise.

        Packit 90a5c9
        Packit 90a5c9
            

        Some servers, like Microsoft IIS, load the ISAPI extension

        Packit 90a5c9
            into the server and keep it loaded until memory usage is too
        Packit 90a5c9
            high, or unless configuration options are specified. Apache
        Packit 90a5c9
            currently loads and unloads the ISAPI extension each time it is
        Packit 90a5c9
            requested, unless the ISAPICacheFile directive is specified.
        Packit 90a5c9
            This is inefficient, but Apache's memory model makes this the
        Packit 90a5c9
            most effective method. Many ISAPI modules are subtly
        Packit 90a5c9
            incompatible with the Apache server, and unloading these
        Packit 90a5c9
            modules helps to ensure the stability of the server.

        Packit 90a5c9
        Packit 90a5c9
            

        Also, remember that while Apache supports ISAPI Extensions,

        Packit 90a5c9
            it does not support ISAPI Filters. Support for
        Packit 90a5c9
            filters may be added at a later date, but no support is planned
        Packit 90a5c9
            at this time.

        Packit 90a5c9
        top
        Packit 90a5c9
        Packit 90a5c9

        Programmer's Journal

        Packit 90a5c9
        Packit 90a5c9
            

        If you are programming Apache 2.0 mod_isapi

        Packit 90a5c9
            modules, you must limit your calls to ServerSupportFunction
        Packit 90a5c9
            to the following directives:

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
              
        HSE_REQ_SEND_URL_REDIRECT_RESP
        Packit 90a5c9
              
        Redirect the user to another location.
        Packit 90a5c9
              This must be a fully qualified URL (e.g.
        Packit 90a5c9
              http://server/location).
        Packit 90a5c9
        Packit 90a5c9
              
        HSE_REQ_SEND_URL
        Packit 90a5c9
              
        Redirect the user to another location.
        Packit 90a5c9
              This cannot be a fully qualified URL, you are not allowed to
        Packit 90a5c9
              pass the protocol or a server name (e.g. simply
        Packit 90a5c9
              /location).
        Packit 90a5c9
              This redirection is handled by the server, not the
        Packit 90a5c9
              browser.
        Packit 90a5c9
              

        Warning

        Packit 90a5c9
                

        In their recent documentation, Microsoft appears to have

        Packit 90a5c9
                abandoned the distinction between the two
        Packit 90a5c9
                HSE_REQ_SEND_URL functions. Apache continues to treat
        Packit 90a5c9
                them as two distinct functions with different requirements
        Packit 90a5c9
                and behaviors.

        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
        HSE_REQ_SEND_RESPONSE_HEADER
        Packit 90a5c9
              
        Apache accepts a response body following the header if it
        Packit 90a5c9
              follows the blank line (two consecutive newlines) in the
        Packit 90a5c9
              headers string argument. This body cannot contain NULLs,
        Packit 90a5c9
              since the headers argument is NULL terminated.
        Packit 90a5c9
        Packit 90a5c9
              
        HSE_REQ_DONE_WITH_SESSION
        Packit 90a5c9
              
        Apache considers this a no-op, since the session will be
        Packit 90a5c9
              finished when the ISAPI returns from processing.
        Packit 90a5c9
        Packit 90a5c9
              
        HSE_REQ_MAP_URL_TO_PATH
        Packit 90a5c9
              
        Apache will translate a virtual name to a physical
        Packit 90a5c9
              name.
        Packit 90a5c9
        Packit 90a5c9
              
        HSE_APPEND_LOG_PARAMETER
        Packit 90a5c9
              
        Packit 90a5c9
                This logged message may be captured in any of the following
        Packit 90a5c9
                logs:
        Packit 90a5c9
        Packit 90a5c9
                
          Packit 90a5c9
                    
        • in the \"%{isapi-parameter}n\" component in a
        • Packit 90a5c9
                    CustomLog
          Packit 90a5c9
                    directive
          Packit 90a5c9
          Packit 90a5c9
                    
        • in the %q log component with the
        • Packit 90a5c9
                    ISAPIAppendLogToQuery
          Packit 90a5c9
                    On directive
          Packit 90a5c9
          Packit 90a5c9
                    
        • in the error log with the ISAPIAppendLogToErrors On directive
        • Packit 90a5c9
                  
          Packit 90a5c9
          Packit 90a5c9
                  

          The first option, the %{isapi-parameter}n component,

          Packit 90a5c9
                  is always available and preferred.

          Packit 90a5c9
                
          Packit 90a5c9
          Packit 90a5c9
                
          HSE_REQ_IS_KEEP_CONN
          Packit 90a5c9
                
          Will return the negotiated Keep-Alive status.
          Packit 90a5c9
          Packit 90a5c9
                
          HSE_REQ_SEND_RESPONSE_HEADER_EX
          Packit 90a5c9
                
          Will behave as documented, although the fKeepConn
          Packit 90a5c9
                flag is ignored.
          Packit 90a5c9
          Packit 90a5c9
                
          HSE_REQ_IS_CONNECTED
          Packit 90a5c9
                
          Will report false if the request has been aborted.
          Packit 90a5c9
              
          Packit 90a5c9
          Packit 90a5c9
              

          Apache returns FALSE to any unsupported call to

          Packit 90a5c9
              ServerSupportFunction, and sets the
          Packit 90a5c9
              GetLastError value to
          Packit 90a5c9
              ERROR_INVALID_PARAMETER.

          Packit 90a5c9
          Packit 90a5c9
              

          ReadClient retrieves the request body exceeding the

          Packit 90a5c9
              initial buffer (defined by ISAPIReadAheadBuffer). Based on the
          Packit 90a5c9
              ISAPIReadAheadBuffer setting (number of bytes
          Packit 90a5c9
              to buffer prior to calling the ISAPI handler) shorter requests are sent
          Packit 90a5c9
              complete to the extension when it is invoked. If the request is
          Packit 90a5c9
              longer, the ISAPI extension must use ReadClient to
          Packit 90a5c9
              retrieve the remaining request body.

          Packit 90a5c9
          Packit 90a5c9
              

          WriteClient is supported, but only with the

          Packit 90a5c9
              HSE_IO_SYNC flag or no option flag (value of
          Packit 90a5c9
              0). Any other WriteClient request
          Packit 90a5c9
              will be rejected with a return value of FALSE, and a
          Packit 90a5c9
              GetLastError value of
          Packit 90a5c9
              ERROR_INVALID_PARAMETER.

          Packit 90a5c9
          Packit 90a5c9
              

          GetServerVariable is supported, although extended server

          Packit 90a5c9
              variables do not exist (as defined by other servers.) All the
          Packit 90a5c9
              usual Apache CGI environment variables are available from
          Packit 90a5c9
              GetServerVariable, as well as the ALL_HTTP
          Packit 90a5c9
              and ALL_RAW values.

          Packit 90a5c9
          Packit 90a5c9
              

          Since httpd 2.0, mod_isapi supports additional

          Packit 90a5c9
              features introduced in later versions of the ISAPI specification,
          Packit 90a5c9
              as well as limited emulation of async I/O and the
          Packit 90a5c9
              TransmitFile semantics. Apache httpd also supports preloading
          Packit 90a5c9
              ISAPI .dlls for performance.

          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:Record HSE_APPEND_LOG_PARAMETER requests from
          Packit 90a5c9
          ISAPI extensions to the error log
          Packit 90a5c9
          Syntax:ISAPIAppendLogToErrors on|off
          Packit 90a5c9
          Default:ISAPIAppendLogToErrors off
          Packit 90a5c9
          Context:server config, virtual host, directory, .htaccess
          Packit 90a5c9
          Override:FileInfo
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          Record HSE_APPEND_LOG_PARAMETER requests from ISAPI

          Packit 90a5c9
              extensions to the server error log.

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:Record HSE_APPEND_LOG_PARAMETER requests from
          Packit 90a5c9
          ISAPI extensions to the query field
          Packit 90a5c9
          Syntax:ISAPIAppendLogToQuery on|off
          Packit 90a5c9
          Default:ISAPIAppendLogToQuery on
          Packit 90a5c9
          Context:server config, virtual host, directory, .htaccess
          Packit 90a5c9
          Override:FileInfo
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          Record HSE_APPEND_LOG_PARAMETER requests from ISAPI

          Packit 90a5c9
              extensions to the query field (appended to the CustomLog %q
          Packit 90a5c9
              component).

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:ISAPI .dll files to be loaded at startup
          Packit 90a5c9
          Syntax:ISAPICacheFile file-path [file-path]
          Packit 90a5c9
          ...
          Packit 90a5c9
          Context:server config, virtual host
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          Specifies a space-separated list of file names to be loaded

          Packit 90a5c9
              when the Apache server is launched, and remain loaded until the
          Packit 90a5c9
              server is shut down. This directive may be repeated for every
          Packit 90a5c9
              ISAPI .dll file desired. The full path name of each file should
          Packit 90a5c9
              be specified. If the path name is not absolute, it will be treated
          Packit 90a5c9
              relative to ServerRoot.

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:Fake asynchronous support for ISAPI callbacks
          Packit 90a5c9
          Syntax:ISAPIFakeAsync on|off
          Packit 90a5c9
          Default:ISAPIFakeAsync off
          Packit 90a5c9
          Context:server config, virtual host, directory, .htaccess
          Packit 90a5c9
          Override:FileInfo
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          While set to on, asynchronous support for ISAPI callbacks is

          Packit 90a5c9
              simulated.

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:Log unsupported feature requests from ISAPI
          Packit 90a5c9
          extensions
          Packit 90a5c9
          Syntax:ISAPILogNotSupported on|off
          Packit 90a5c9
          Default:ISAPILogNotSupported off
          Packit 90a5c9
          Context:server config, virtual host, directory, .htaccess
          Packit 90a5c9
          Override:FileInfo
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          Logs all requests for unsupported features from ISAPI

          Packit 90a5c9
              extensions in the server error log. This may help administrators
          Packit 90a5c9
              to track down problems. Once set to on and all desired ISAPI modules
          Packit 90a5c9
              are functioning, it should be set back to off.

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          top
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Description:Size of the Read Ahead Buffer sent to ISAPI
          Packit 90a5c9
          extensions
          Packit 90a5c9
          Syntax:ISAPIReadAheadBuffer size
          Packit 90a5c9
          Default:ISAPIReadAheadBuffer 49152
          Packit 90a5c9
          Context:server config, virtual host, directory, .htaccess
          Packit 90a5c9
          Override:FileInfo
          Packit 90a5c9
          Status:Base
          Packit 90a5c9
          Module:mod_isapi
          Packit 90a5c9
          Packit 90a5c9
              

          Defines the maximum size of the Read Ahead Buffer sent to

          Packit 90a5c9
              ISAPI extensions when they are initially invoked. All remaining
          Packit 90a5c9
              data must be retrieved using the ReadClient callback; some
          Packit 90a5c9
              ISAPI extensions may not support the ReadClient function.
          Packit 90a5c9
              Refer questions to the ISAPI extension's author.

          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9
          Packit 90a5c9

          Available Languages:  en  |

          Packit 90a5c9
           fr  |
          Packit 90a5c9
           ko 

          Packit 90a5c9
          top

          Comments

          Notice:
          This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
          Packit 90a5c9
          <script type="text/javascript">
          Packit 90a5c9
          var comments_shortname = 'httpd';
          Packit 90a5c9
          var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_isapi.html';
          Packit 90a5c9
          (function(w, d) {
          Packit 90a5c9
              if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
          Packit 90a5c9
                  d.write('
          <\/div>');
          Packit 90a5c9
                  var s = d.createElement('script');
          Packit 90a5c9
                  s.type = 'text/javascript';
          Packit 90a5c9
                  s.async = true;
          Packit 90a5c9
                  s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
          Packit 90a5c9
                  (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
          Packit 90a5c9
              }
          Packit 90a5c9
              else { 
          Packit 90a5c9
                  d.write('
          Comments are disabled for this page at the moment.<\/div>');
          Packit 90a5c9
              }
          Packit 90a5c9
          })(window, document);
          Packit 90a5c9
          //--></script>
          Packit 90a5c9

          Copyright 2018 The Apache Software Foundation.
          Licensed under the Apache License, Version 2.0.

          Packit 90a5c9

          Modules | Directives | FAQ | Glossary | Sitemap

          <script type="text/javascript">
          Packit 90a5c9
          if (typeof(prettyPrint) !== 'undefined') {
          Packit 90a5c9
              prettyPrint();
          Packit 90a5c9
          }
          Packit 90a5c9
          //--></script>
          Packit 90a5c9
          </body></html>