Эти три заголовка добавляются с помощью PHP
header('Content-Type: application/json; charset=UTF-8;'); header('Access-Control-Allow-Methods: GET, POST'); header('Access-Control-Allow-Origin: *');
Все отправленные заголовки:
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;
Однако, пытаясь использовать $ .json или $ .post для таргетинга на этот сервер, я получаю эту ошибку в консоли 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.
Я знаю, что это возможный дубликат нескольких других вопросов, но поскольку я прошел через многие из них и попробовал несколько вещей, чтобы попытаться исправить это: я был бы признателен за некоторые конкретные ответы, чтобы разобраться с моей проблемой.
Как выяснил Йоахим Исакссон, из-за того, что исходные заголовки состоят из 301 Redirect, есть ли способ заставить запрос следовать за перенаправлением, прежде чем проверять заголовки Access-Control-Allow-Origin?
Причина, по которой CORS не работает, заключается в том, что ваша ссылка дает «301 Moved Permently» без заголовка CORS, перенаправляя на другую ссылку.
Ссылка, которую он перенаправляет на отправку заголовка, однако кажется, что CORS уже отказался от предполетного отчета по первому ответу.
Возврат заголовка «Access-Control-Allow-Origin» с 301 может решить вашу проблему, что должно позволить продолжить предполетную запись.