2014-11-02 4 views
0

Где я могу добавить эту функцию response.addHeader («Access-Control-Allow-Origin», «*»); чтобы избежать ошибки, заголовок «Нет» Access-Control-Allow-Origin »присутствует на запрошенном ресурсе».где я должен добавить response.addHeader?

Это моя функция ajax. Теперь я могу получить ответ ajax только с www.myspansalon.com .. Мне нужен ответ от myspansalon.com.

<script> 
 
function getdetails(rate){ 
 

 
var itemid=jQuery("#itemid").val(); 
 
var userid=jQuery("#userid").val(); 
 
jQuery("#clear").show(); 
 
jQuery("#uservote").text('loading...'); 
 
jQuery.ajax({ 
 
\t type: "POST", 
 
\t url:"http://www.myspansalon.com/joomla/index.php?option=com_flexicontent&format=raw&task=myvoting", 
 
     
 
\t data: {item_id:itemid, user_id:userid, rating:rate } 
 
\t }).done(function(result){ 
 
\t \t  
 
jQuery("#uservote").text(result); 
 
\t }); 
 
} 
 
</script>

+0

возможный дубликат http://stackoverflow.com/questions/7686827/how-can-i-add-a-custom-http-header -to-ajax-request-with-js-or-jquery –

+0

Сервер отправляет заголовки ответов, а не клиент. – Barmar

+0

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

ответ

0

Я думаю, вы можете попробовать xhr.setResponseHeader("Access-Control-Allow-Origin", "*");, пожалуйста, проверьте ваш измененный код ниже. Я не уверен, будет ли это работать, потому что в основном заголовок ответа устанавливается на сервере, а не на клиенте.

<script > 
function getdetails(rate) { 

    var itemid = jQuery("#itemid").val(); 
    var userid = jQuery("#userid").val(); 
    jQuery("#clear").show(); 
    jQuery("#uservote").text('loading...'); 
    jQuery.ajax({ 
     type: "POST", 
     url: "http://www.myspansalon.com/joomla/index.php?option=com_flexicontent&format=raw&task=myvoting", 

     data: { 
      item_id: itemid, 
      user_id: userid, 
      rating: rate 
     }, 
     success: function (response, status, xhr) { 
      xhr.setResponseHeader("Access-Control-Allow-Origin", "*"); 
      if (status == "success") { 
       alert(response); 
      } else { 
       alert(status + ' - ' + xhr.status); 
      } 
     } 
    }).done(function (result) { 

     jQuery("#uservote").text(result); 
    }); 
} < /script> 

Чтобы установить заголовок ответа на стороне сервера: -

Если веб-сайт вебсервис разработан в Java и использует в качестве кота сервера, то вы можете обратиться this post. В Java-приложении вы можете сделать это с помощью реализации класса javax.servlet.Filter (независимо от сервера). Но, увидев url, используемый в коде, который вы отправили, представляется php, поэтому вы можете follow this link.

+0

@ Visruth .. не работает .. :(.. как я могу установить заголовок ответа на сервере? –

+0

@RafahGafoor Я обновил ответ. – Visruth

0

Сначала вы пытаетесь получить доступ к другому домену с помощью AJAX, поэтому SOP (Same-origin policy) должен быть включен в другом домене.

вы можете добавить header в beforeSend случае, смотрите ниже

beforeSend: function(xhr) { 
     xhr.setRequestHeader('x-my-custom-header', 'some value'); 
    } 
+0

Это не сработает. Это заголовок ответа, а не заголовок запроса Он должен быть отправлен сервером. – Barmar

+0

right @Barmar, но ему нужно будет разрешить (политика одинакового происхождения) на сервере для доступа к домену .. – Girish