我需要从在 localhost 的不同端口上运行的两个不同应用程序访问在域(example.com)上运行的服务,但出现 CORS 错误。
浏览器访问的PageURL为:
http://localhost:8081/weather
内部发送 AJAX 请求到
example.com/getResponse
我在(example.com)的 Apache 中配置了 CORS 标头,如下所示:
SetEnvIfNocase Origin "http://localhost:8085" CORS_ALLOW_ORIGIN1=$0
Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN1}e env=CORS_ALLOW_ORIGIN1
SetEnvIfNocase Origin "http://localhost:8081" CORS_ALLOW_ORIGIN2=$0
Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN2}e env=CORS_ALLOW_ORIGIN2
现在请求标头是:
Accept:*/*
Accept-Encoding: gzip,deflate,br
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
Host: example.com
Origin: http://localhost:8081
Referer: http://localhost:8081/weather
User-Agent: Mozilla
获取响应标头为:
Access-Control-Allow-Origin: $0
显然错误来自“CORS 被阻止:原因:CORS 标头与'$0'不匹配”。响应中存在“Access-Control-Allow-Origin”标头意味着 SetEnvIfNoCase 执行并匹配“Origin”请求标头值。
我的问题是为什么 $0 没有被匹配的整个字符串替换。?