Лучшие практики для получения ответов JSON между сайтами на POST? - PullRequest
5 голосов
/ 16 октября 2008

Я работаю в интрасети с несколькими поддоменами. У меня есть контроль над каждым поддоменом, поэтому безопасность межсайтовых запросов не имеет значения. У меня есть PHP-сценарии с ответами JSON, которые я хотел бы вызывать из нескольких поддоменов без дублирования. Для запросов GET я могу сделать это с AJAX и JSONP, но это не работает с запросами POST. Некоторые альтернативы, которые я вижу, ни одна из которых не кажется очень хорошей:

  • POST для копии на локальном поддомене с минимальным ответом, затем ПОЛУЧИТЕ полный ответ из центрального расположения с JSONP
  • И POST, и GET для копирования на локальный поддомен с JSON
  • Используйте mod_rewrite для использования локальных URL-адресов с центральным скриптом на серверной стороне с JSON
  • Использование символических ссылок для использования локальных URL-адресов с центральным скриптом на серверной стороне с JSON

Я что-то упустил? Что бы вы сделали здесь?

Ответы [ 4 ]

2 голосов
/ 11 сентября 2009

просто посмотрите на эту https://developer.mozilla.org/En/HTTP_access_control страницу. Все что вам нужно - добавьте заголовок ко всем вашим скриптам, которые принимают пост-запрос. Пример:

2 голосов
/ 16 октября 2008

Вы можете написать простой отражатель на стороне сервера. Добавьте сценарий к каждому домену, который просто передает ваш запрос ajax на соответствующий домен. Этот скрипт может быть очень простым (1 или 2 строки кода), он позволяет избежать проблем межсайтового скриптинга и означает, что вам не нужно дублировать сложную бизнес-логику в ваших существующих скриптах.

Это вызовет дополнительную работу для вашего сервера, но это не может быть проблемой для вас.

Ниже приведен пример кода, который я могу найти на сайтах, которыми я управляю. Здесь нам нужно было иметь возможность использовать Googles Chart API для соединения HTTPS (которое он пока не поддерживает). Решением было добавить следующий скрипт, который передавал вызовы ...

<?php
// Set header so our output looks like a PNG
header("Content-Type: image/png");

// Reflect the image from googles chart API
echo file_get_contents('http://chart.apis.google.com/chart?'.$_SERVER['QUERY_STRING']);
?>
0 голосов
/ 29 октября 2008

Если все они являются поддоменами одного домена, вы можете просто добавить этот код на каждую страницу:

document.domain = 'domain.com';

Тогда просто используйте обычный xmlHttpRequest.

0 голосов
/ 16 октября 2008

Я использую подход REST в таких случаях. Поиск Google для получения дополнительной информации о REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...