[Seaside] Safari on Leopard Apache post problem

Roger Whitney whitney at cs.sdsu.edu
Wed Nov 14 04:38:03 UTC 2007

	On the Leopard machine I start with stock Apache config file that  
ships with Leopard (see below) and add in a separate conf file that is  
included in the httpd.conf file:
ScriptAlias /scandia/2008/ "/Library/WebServer/CGI-Executables/ 

<Directory /Library/WebServer/CGI-Executables/>
         Options +FollowSymLinks
         RewriteEngine on
         RewriteCond %{HTTP:Authorization} ^(.*)
         RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]

(Aside: the rewrite rules above do not work to pass the http  
authorization requests). The scandia.pl file is the perl relay file  
$visualHome/waveserver/waverelays/perl/visualworks.pl.  The /Library/ 
WebServer/CGI-Executables is Apple's CGI-bin directory.

The httpd.conf file with some comments removed:
ServerRoot "/usr"

Listen 80

LoadModule authn_file_module libexec/apache2/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
LoadModule authn_default_module libexec/apache2/mod_authn_default.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache2/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
LoadModule authz_default_module libexec/apache2/mod_authz_default.so
LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
LoadModule cache_module libexec/apache2/mod_cache.so
LoadModule disk_cache_module libexec/apache2/mod_disk_cache.so
LoadModule mem_cache_module libexec/apache2/mod_mem_cache.so
LoadModule dbd_module libexec/apache2/mod_dbd.so
LoadModule dumpio_module libexec/apache2/mod_dumpio.so
LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule filter_module libexec/apache2/mod_filter.so
LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so
LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache2/mod_cern_meta.so
LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
LoadModule ident_module libexec/apache2/mod_ident.so
LoadModule usertrack_module libexec/apache2/mod_usertrack.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule version_module libexec/apache2/mod_version.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule asis_module libexec/apache2/mod_asis.so
LoadModule info_module libexec/apache2/mod_info.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule imagemap_module libexec/apache2/mod_imagemap.so
LoadModule actions_module libexec/apache2/mod_actions.so
LoadModule speling_module libexec/apache2/mod_speling.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule bonjour_module     libexec/apache2/mod_bonjour.so
#LoadModule php5_module        libexec/apache2/libphp5.so
#LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so

<IfModule !mpm_netware_module>

User www
Group www

ServerAdmin you at example.com

DocumentRoot "/Library/WebServer/Documents"

<Directory />
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     Deny from all

<Directory "/Library/WebServer/Documents">
     Options Indexes FollowSymLinks MultiViews
     AllowOverride None
     Order allow,deny
     Allow from all


<IfModule dir_module>
     DirectoryIndex index.html

<FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
     Order allow,deny
     Deny from all
     Satisfy All

<Files "rsrc">
     Order allow,deny
     Deny from all
     Satisfy All
<DirectoryMatch ".*\.\.namedfork">
     Order allow,deny
     Deny from all
     Satisfy All

ErrorLog /private/var/log/apache2/error_log

LogLevel warn

<IfModule log_config_module>

     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User- 
Agent}i\"" combined
     LogFormat "%h %l %u %t \"%r\" %>s %b" common

     <IfModule logio_module>
       # You need to enable mod_logio.c to use %I and %O
       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User- 
Agent}i\" %I %O" combinedio

     # The location and format of the access logfile (Common Logfile  
     # If you do not define any access logfiles within a <VirtualHost>
     # container, they will be logged here.  Contrariwise, if you *do*
     # define per-<VirtualHost> access logfiles, transactions will be
     # logged therein and *not* in this file.
     CustomLog /private/var/log/apache2/access_log common

     # If you prefer a logfile with access, agent, and referer  
     # (Combined Logfile Format) you can use the following directive.
     #CustomLog /private/var/log/apache2/access_log combined

<IfModule alias_module>

     # ScriptAlias: This controls which directories contain server  
     # ScriptAliases are essentially the same as Aliases, except that
     # documents in the target directory are treated as applications and
     # run by the server when requested rather than as documents sent  
to the
     # client.  The same rules about trailing "/" apply to ScriptAlias
     # directives as to Alias.
     ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/ 


<IfModule cgid_module>


# "/Library/WebServer/CGI-Executables" should be changed to whatever  
your ScriptAliased
# CGI directory exists, if you have that configured.
<Directory "/Library/WebServer/CGI-Executables">
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all

DefaultType text/plain

<IfModule mime_module>

     TypesConfig /private/etc/apache2/mime.types

     AddType application/x-compress .Z
     AddType application/x-gzip .gz .tgz

     # AddHandler allows you to map certain file extensions to  
     # actions unrelated to filetype. These can be either built into  
the server
     # or added with the Action directive (see below)
     # To use CGI scripts outside of ScriptAliased directories:
     # (You will also need to add "ExecCGI" to the "Options" directive.)
     #AddHandler cgi-script .cgi

     # For type maps (negotiated resources):
     #AddHandler type-map var

     # Filters allow you to process content before it is sent to the  
     # To parse .shtml files for server-side includes (SSI):
     # (You will also need to add "Includes" to the "Options"  
     #AddType text/html .shtml
     #AddOutputFilter INCLUDES .shtml

# The mod_mime_magic module allows the server to use various hints  
from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#MIMEMagicFile /private/etc/apache2/magic

# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html

# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#EnableMMAP off
#EnableSendfile off

# Supplemental configuration
# The configuration files in the /private/etc/apache2/extra/ directory  
can be
# included to add extra features or to modify the default  
configuration of
# the server, or you may simply copy their contents here and change as
# necessary.

# Server-pool management (MPM specific)
Include /private/etc/apache2/extra/httpd-mpm.conf

# Multi-language error messages
#Include /private/etc/apache2/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include /private/etc/apache2/extra/httpd-autoindex.conf

# Language settings
Include /private/etc/apache2/extra/httpd-languages.conf

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include /private/etc/apache2/extra/httpd-info.conf

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
Include /private/etc/apache2/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include /private/etc/apache2/extra/httpd-dav.conf

# Various default settings
#Include /private/etc/apache2/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include /private/etc/apache2/extra/httpd-ssl.conf
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

Include /private/etc/apache2/other/*.conf
On Nov 13, 2007, at 6:22 PM, Boris Popov wrote:

> That's pretty much the same configuration I'm using and we haven't  
> seen
> this problem yet. Could you perhaps post your Apache config so we  
> could
> compare?
>> -----Original Message-----
>> From: seaside-bounces at lists.squeakfoundation.org [mailto:seaside-
>> bounces at lists.squeakfoundation.org] On Behalf Of Roger Whitney
>> Sent: Tuesday, November 13, 2007 4:20 PM
>> To: Seaside - general discussion
>> Subject: [Seaside] Safari on Leopard Apache post problem
>> I have a problem with the new Safari on Leopard (Mac OS 10.5)
>> accessing a Seaside application running behind Apache and hope  
>> someone
>> can shed some light on it.
>> I am using Seaside 2.8 on VW 7.5. When I run Seaside as a standalone
>> web server in VW (the tiny Web server in VW) Safari in Leopard has no
>> problems accessing the Seaside application. When I run the Seaside
>> application behind Apache there is no problem with Firefox, Opera and
>> older versions of Safari accessing the application.
>> When I use Safari 3.0.4, which comes on Leopard, there are problems
>> with posts from a seaside page. The problem occurs not only on my  
>> code
>> but in Functional Seaside Test Suite examples. When I click on a
>> button to submit a form the bowser says it is contacting the server
>> and seems to wait for ever without timing out. On the server side I
>> first get the POST request. According to the log file 15 seconds  
>> later
>> I get a GET request. The server and client are running on the same
>> machine (Dual Core), so there is no network delay. A few seconds  
>> later
>> a second GET request comes from Safari. If I stop the request from
>> Safari and then have it reload the page I do get the reply to the
> post.
>> Since Safari 3.0.4 does work when talking directly to the VW web
>> server there is some problem with Safari 3.0.4 and Apache. Does  
>> anyone
>> have any idea how to configure Apache to avoid this? Unfortunately
>> some of my users can only access port 80, so I have to run behind
>> Apache.
>> ----
>> Roger Whitney              Department of Computer Science
>> whitney at cs.sdsu.edu        San Diego State University
>> http://www.eli.sdsu.edu/   San Diego, CA 92182-7720
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

Roger Whitney              Department of Computer Science
whitney at cs.sdsu.edu        San Diego State University
http://www.eli.sdsu.edu/   San Diego, CA 92182-7720

More information about the seaside mailing list