Intereting Posts
Ошибка толерантного анализа HTML / XML / SGML в PHP как поместить объект по внешнему URL-адресу в amazon s3 Функция PHP mail (), отправляющая дубликат (пустой) адрес электронной почты PHP – Как убедиться, что прокси-соединение curl_multi было успешным? Как сделать расшифровку AES256 в PHP? Cookie не удалит Недопустимое исключение аргумента при генерации объектов из существующей базы данных Заказ MySQL результатов для подчинения parent / child Вызов неопределенного метода Illuminate \\ Database \\ Schema \\ Blueprint :: increments () как отправить пользовательский ввод в php, excute sql command и выводить вывод из php Проблема перенаправления PHP-страницы – Невозможно изменить информацию заголовка Проверьте, не выведен ли определенный текст на экран PHP WAMPSERVER – обновлять версию PHP только с 5.4.3 до 5.5.4 Именованный захват в PHP с использованием регулярного выражения Как получить комментарии из XML-документа в PHP

Такая же политика происхождения – JavaScript-вызов PHP

Я знаю, что это популярная тема, но мне еще предстоит найти ответ, который будет полностью всеобъемлющим.

Я пытаюсь создать простой способ для наших «клиентов» разместить карту Google на своем веб-сайте, на которой размещается позиция наших клиентов (или их подмножество) на карте. Клиенты находятся в базе данных MySQL, которая превращается в XML на лету с помощью PHP-скрипта (согласно примеру Google). Это отлично работает на моем веб-сайте, но когда я пытаюсь использовать его на другом веб-сайте, xmlHTTPRequest не может просматривать PHP, как в другом домене.

Я могу обойти это, написав другой файл PHP на другом домене, который просто читает файл PHP в исходном домене. Но не все наши клиенты будут работать PHP на своих серверах. Есть ли способ вернуть результаты XML из нашей базы данных с помощью JavaScript?

Несколько баллов:

  1. JavaScript, который делает xmlHTTPRequest все еще сидит на нашем сервере – наши клиенты ссылаются на него из тега скрипта. Я думал, что этого может быть достаточно, но «происхождение» (в соответствии с Chrome, в любом случае) по-прежнему рассматривается как домен №2

  2. Это замечательно: если я использую абсолютную ссылку в xmlHTTPRequest (например, request.open ('GET', 'http://mydomain.com/api/foo.php', true), то он не будет работать в IE, но если я использую относительную ссылку ('/api/foo.php'), она будет работать.

  3. Я не знаю об этом, но могу ли я использовать JSON? Я видел: «script src =» http: //…./someData.js? Callback = some_func », но не знаю, как, я бы сделал« someData.js »похожим на JSON? (Я очень много думаю о функциях, которые, вероятно, неверны?).

  4. Я попытался добавить заголовок («Access-Control-Allow-Origin: *»); к вершине PHP, которая выводит XML, но на самом деле это не так много, что я могу сказать!

  5. Если я использую оболочку PHP на сервере клиента, то в чем преимущество использования запроса cURL, а не просто file_get_contents или fopen?

Извините, много вопросов, но любое руководство будет принята с благодарностью.

Массивное спасибо,

Мат

Простым способом этого является то, чтобы ваш PHP-скрипт возвращал что-то вроде:

callback_function(YOUR_DATA); 

Затем в скрипте JS, включенном на сайт клиентов, вы динамически вставляете <script> который имеет src указывающий на ваш PHP-скрипт:

 (function() { var scriptElement = document.createElement('script'); scriptElement.type = 'text/javascript'; scriptElement.async = true; scriptElement.src = 'http://example.org/yourScript.php?data=...'; var container = document.getElementsByTagName('script')[0]; container.parentNode.insertBefore(scriptElement, container); })(); 

Этот метод называется JSONP и должен делать именно то, что вы хотите;)

Еще один способ решения проблемы – разрешить междоменное XMLHttpRequest в политике безопасности контента. Но я думаю, что только Firefox 4 поддерживает это прямо сейчас.

Можете ли вы использовать JSON вместо XML? Если это так, ваш вариант 3), вероятно, будет вашим лучшим выбором. При таком подходе существуют риски безопасности, и их следует использовать только для известных и надежных источников.

More reading: http://www.codeproject.com/KB/aspnet/JSONToJSONP.aspx

JavaScript – это клиентская сторона, но базы данных нет. JavaScript не может напрямую извлекать из базы данных MySQL.