El encabezado “No ‘Access-Control-Allow-Origin’ CORS está presente” pero aún hay

Estos tres encabezados se agregan usando PHP

header('Content-Type: application/json; charset=UTF-8;'); header('Access-Control-Allow-Methods: GET, POST'); header('Access-Control-Allow-Origin: *'); 

Todos los encabezados enviados son:

  HTTP/1.1 200 OK Date: Mon, 30 Jun 2014 06:39:29 GMT Server: Apache X-Powered-By: PHP/5.3.28 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Origin: * Vary: Accept-Encoding,User-Agent Content-Encoding: gzip Cache-Control: max-age=1, private, must-revalidate Content-Length: 20 Keep-Alive: timeout=3, max=100 Connection: Keep-Alive Content-Type: application/json; charset=UTF-8; 

Sin embargo, cuando trato de usar $ .json o $ .post para apuntar a este servidor, aparece este error en la consola de Chrome:

  XMLHttpRequest cannot load http://cms.webdevguru.co.uk/gurucms.php?mode=addto&apikey=606717496665bcba. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://remote.webdevguru.co.uk' is therefore not allowed access. 

Sé que este es un posible duplicado de algunas otras preguntas, pero dado que he analizado muchas de ellas y he intentado algunas de ellas para intentar solucionar esto: agradecería algunas respuestas específicas para tratar mi problema.

Como descubrió Joachim Isaksson, es porque los encabezados iniciales consisten en un redireccionamiento 301, ¿hay alguna forma de forzar la solicitud para seguir el redireccionamiento antes de buscar los encabezados de Access-Control-Allow-Origin?

La razón por la que CORS no está funcionando es que su enlace proporciona un “301 Movido permanentemente” sin un encabezado CORS, redirigiendo a otro enlace.

El enlace al que redirige envía el encabezado, sin embargo, parece que CORS ya ha renunciado a la verificación previa en la primera respuesta.

Al pasar un encabezado “Access-Control-Allow-Origin” con el 301 puede resolver su problema, eso debería permitir que la verificación previa continúe.