Как решить ту же политику происхождения в Mozilla

#javascript #autocomplete #same-origin-policy

#javascript #автозаполнение #политика того же происхождения

Вопрос:

Я внедряю автозаполнение YUI в свой проект. Я создал веб-сервис, который предоставляет предложения по автозаполнению. Все работает нормально, когда я развертываю свое приложение и веб-службу на одном компьютере. Но когда я развертываю веб-службу на другом компьютере, она не работает в Firefox (но она работает в IE). Я думаю, что из-за политики того же происхождения она не работает в Mozilla.
Вот мой код автозаполнения

 <script type="text/javascript">
YAHOO.example.BasicRemote = function() {

    // Using an XHRDataSource to connect to web service
   var oDS = new YAHOO.util.XHRDataSource("http://host_other_than_my_machine/i2b2/services/AutocompleteService/getCodes"); 


    // Set the responseType as XML
    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_XML;

    // Define the schema of the delimited results
    oDS.responseSchema = { 
                            resultNode: 'code', 
                            fields: ['value']             
                         }; 

    // Enable caching
    oDS.maxCacheEntries = 0;

    // Instantiate the AutoComplete
    var oAC = new YAHOO.widget.AutoComplete("myInput", "myContainer", oDS);

    return {
        oDS: oDS,
        oAC: oAC
    };
}();
</script>   
 

Мои вопросы
1) Является ли политика того же происхождения актуальной проблемой? Если да, то IE не привязан к той же политике, что и мой код, который работает в IE?
2) Как избавиться от этого? Я знаю, что некоторый php-код можно использовать для перенаправления запроса, но как я могу использовать его здесь?

~ Ajinkya.

Ответ №1:

Вероятно, ваша проблема связана с источником запроса AJAX, вам следует изучить это: безопасность запросов с перекрестным источником.

В принципе, для apache вам нужно будет добавить следующее в файл «host_other_than_my_machine» .htaccess:

 <IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "http://trusted.site"
</IfModule>
 

Конечно, замена «http://trusted.site » с доменом, с которого вы будете делать запросы.


Редактировать: если вам нужно разрешить доступ для нескольких удаленных доменов, вы можете просто использовать:

 Header set Access-Control-Allow-Origin "*"
 

Обычно это не должно быть проблемой безопасности, но обязательно тщательно рассмотрите ваш конкретный случай, т. Е. Если Вы предоставляете конфиденциальную информацию через ответы AJAX.

Комментарии:

1. Спасибо за предложение, но я не могу попробовать этот подход, поскольку он будет развернут на многих компьютерах, и я не уверен в их именах.

Ответ №2:

Использовал PHP-прокси, предоставленный Yahoo, и перенаправлял на него все запросы. http://developer .yahoo.com/javascript/howto-proxy.html