CORS Access-Control-Allow-Origin, несмотря на правильные заголовки

Я пытаюсь настроить простой общий доступ к ресурсам между источниками, используя jQuery (1.7.1) с поддержкой ajax на клиенте и сервер apache, обслуживаемый python (django). Согласно всем инструкциям, которые я прочитал, мои заголовки установлены правильно, но я продолжаю получать следующую ошибку:

XMLHttpRequest не может загрузить http://myexternaldomain.com/get_data. Происхождение http://localhost:8080 не разрешено Доступ-Контроль-Разрешить-Происхождение.

Заголовок, который я пытаюсь отправить (я не уверен, что он даже проходит мимо браузера), выглядит следующим образом:

Request URL:http://myexternaldomain.com/get_data
Accept:application/json, text/javascript, */*; q=0.01
Origin:http://localhost:8080
Referer:http://localhost:8080/static/js/test-zetta.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11

Код javascript

    var request = $.ajax({
        url : "http://myexternaldomain.com/get_data",
        type : "POST",
        dataType : "json",
        crossDomain : true
    });

Обратите внимание, что origin установлен правильно. Сервер добавляет заголовок Access-Control-Allow-Origin = *, используя следующий код Python

def process_response(self, response):
    if response.has_header('Access-Control-Allow-Origin'):
            return response

    response['Access-Control-Allow-Origin'] = '*'
    return response

def get_orders(request):
    """ Tell worker what to do """
    response_data = {}
    response_data['action'] = 'probe'
    response = process_response(HttpResponse(json.dumps(response_data), mimetype="application/json"))
    return response

Если я захожу на адрес напрямую, появляется подтверждение того, что заголовок установлен правильно

Access-Control-Allow-Origin:*
Content-Type:application/json
Date:Thu, 08 Mar 2012 05:06:25 GMT
Server:Apache/2.2.20 (Ubuntu)
Transfer-Encoding:chunked

Однако в настройке междоменного домена это всегда терпит неудачу (пробовал и хром, и firefox). Я пытался реализовать код точно в соответствии с выбранным ответом на этот вопрос, но получаю ту же ошибку

Обновление

Я совершенно уверен, что проблема на стороне сервера, как мне удалось чтобы мои вызовы ajax работали с другим общедоступным сервером с поддержкой CORS.Когда я сравниваю заголовки, возвращаемые с этого общедоступного сервера, и заголовки, возвращаемые с моего (когда я тестирую из того же домена), я не вижу каких-либо существенных различий, которые могли бы объяснить разницу (см. Ниже).

Одну тонкость, которую я исключил, которая может быть важной, а может быть важной, заключается в том, что фактический домен является доменом amazon из нескольких поддоменов. Настоящий адресhttp://ec2-23-20-27-108.compute-1.amazonaws.com/get_orders, не стесняйтесь проверить его, чтобы узнать, кто я делать неправильно.

С общедоступного сервера

Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:622
Content-Type:text/html
Date:Thu, 08 Mar 2012 15:33:20 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:Perl/5.8.7, PHP/4.4.0

С моего сервера - (не работает междоменный доступ)

Access-Control-Allow-Origin:*
Content-Encoding:gzip
Content-Type:text/plain
Date:Thu, 08 Mar 2012 15:32:24 GMT
Server:Apache/2.2.20 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding

5
задан Community 23 May 2017 в 12:16
поделиться