Рекомендации по получению межсайтовых ответов JSON на POST?

StackOverflow https://stackoverflow.com/questions/207554

Вопрос

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

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

Я упускаю что-то более простое?Что бы ты сделал здесь?

Это было полезно?

Решение

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

Другие советы

Вы можете написать простой отражатель на стороне сервера.Добавьте в каждый домен скрипт, который просто передает ваш 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']);
?>

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

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

document.domain = 'domain.com';

Затем просто используйте простой xmlHttpRequest.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top