I am in
the progress of migrating an old banner system to a new one and in doing so I want to rewrite
the old banner system's URL's to
the new one. I load my banners via an AJAX request, and therefore I require
the Access-Control-Allow-Origin to be set to *.
I have
the following VirtualHost configuration:
<VirtualHost *:80>
ServerAdmin
[email protected]
ServerName banner.studenten.net
# we want to allow XMLHTTPRequests
Header set Access-Control-Allow-Origin "*"
RewriteEngine on
RewriteMap bannersOldToNew txt:/home/user/banner.studenten.net/banner-studenten-net-to-ads-all4students-nl-map
# check whether a zoneid exists in
the query string
RewriteCond %{QUERY_STRING} ^(.*)zoneid=([1-9][0-9]*)(.*)
# make sure
the requested banner has been mapped
RewriteCond ${bannersOldToNew:%2|NOTFOUND} !=NOTFOUND
# rewrite to ads.all4students.nl
RewriteRule ^/ads/.* http://ads.all4students.nl/delivery/ajs.php?%1zoneid=${bannersOldToNew:%2}%3 [R]
# else 404 or something
ErrorLog ${APACHE_LOG_DIR}/banner.studenten.net-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/banner.studenten.net-access.log combined
</VirtualHost>
My map file, /home/user/banner.studenten.net/banner-studenten-net-to-ads-all4students-nl-map, contains something like:
# oldId newId
140 11
141 12
142 13
Based on
the above configuration I was expecting
the following:
GET /ads/ajs.php?zoneid=140 HTTP/1.1
Host: banner.studenten.net
HTTP/1.1 302 Found
...
Access-Control-Allow-Origin: *
Location: http://ads.all4students.nl/delivery/ajs.php?zoneid=11
But instead I get
the following:
GET /ads/ajs.php?zoneid=140 HTTP/1.1
Host: banner.studenten.net
HTTP/1.1 302 Found
...
Location: http://ads.all4students.nl/delivery/ajs.php?zoneid=11
Note
the missing Access-Control-Allow-Origin header, this means
the XMLHttpRequest is denied and
the banner is not displayed.
Any suggestions on how to fix this in Apache?