2015-10-16 2 views
5

Я пытаюсь получить запрос AJAX, работающий между моим браузером и сервером Apache (находящимся в другом домене) с использованием CORS.CORS не работает на Chrome/Firefox и Apache

На стороне сервера, я сделал следующие изменения в разделе httpd.conf сервера в соответствии с ответами в «Header set Access-Control-Allow-Origin in .htaccess doesn't work»:

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

Мой AJAX вызов формы:

 $.ajax({ 
      url  :'https://x.x.x.x/validateCustomerID', 
      type  : 'POST', 
      cache : false, 
      crossDomain: true, 
      contentType: 'application/json', 
      beforeSend: function(xhr){ 
        xhr.setRequestHeader("Access-Control-Allow-Methods","POST"); 
        xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With"); 
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
      }, 
      data  : {loginId : '12345'}, 
      success : function(response){console.log("Success"+JSON.stringify(response))}, 
      error  : function(response){console.log("Error"+JSON.stringify(response))} 
     }); 
    } 

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

Сообщения об ошибках, которые я получаю на Chrome и Firefox являются:

  • В Chrome:

«XMLHttpRequest не может загрузить https://x.x.x.x/validateCustomerID 'Access-Control-Allow-Origin:' Нет заголовка присутствует. на запрошенном ресурсе. Поэтому исходный «null» не имеет права доступа. В ответе был код статуса HTTP 403. «

  • В Firefox:

"Cross-Origin Request Заблокировано: The Same Origin Policy Запрещает чтение удаленного ресурса на https://x.x.x.x/validateCustomerID.. (Причина: запрос CORS не удалось)"

В моем браузере не найдено заголовков ответов, которые, как я думаю, являются обязательными для работы CORS, а также журналы на сервере не показывают запроса, получаемого от моего браузера.

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

+0

ли вы активировать заголовки модулей Apache 'a2enmod headers' ? –

+0

Почему вы пытаетесь установить заголовки Access-Control в запросе ** **? – Quentin

+0

@Jacob, я попытался активировать заголовки модуля apache, используя команду заголовков a2enmod, но это дало мне ошибку, что это была некорректная команда. Затем я читал, что Mod_headers включен по умолчанию в Apache, поэтому я оставил его как есть. Может быть, это проблема? –

ответ

1

Это моя установка в site.conf, который работает в производстве теперь с apache2

Header set Access-Control-Allow-Origin "*" 
Header set Access-Control-Allow-Headers "authorization, origin, user-token, x-requested-with, content-type" 
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

для дальнейшего использования я настоятельно рекомендую этот сайт закладку http://enable-cors.org/index.html

+0

Я фактически прошел одну и ту же ссылку при настройке параметров Apache. Однако в последний момент, когда нам нужно выполнить «заголовки a2enmod», я получил сообщение об ошибке, что это недопустимая команда. Я не пробовал его больше, поскольку он был написан чуть выше него, что mod_headers были включены по умолчанию в Apache. –

+0

Ошибка, которую вы указали в своем вопросе, указывает, что заголовки на самом деле не добавлены в ответ, перезапустили ли вы apache? вы используете apache2? – maurycy

+0

безопасно делать *? не можем ли мы просто «https://cdnurl.com»? – runningmark

Смежные вопросы