Javascript API отлично работает на основном сайте, но не работает на внешнем сервере

0

Этот код можно использовать в сочетании с jQuery, чтобы вставить кнопку на странице, чтобы пользователи могли использовать ссылку на мой сайт.

<div class="button" data-text="Button text" data-url="http://externalserver.com">
</div>
<script src="http://mainserver.co.uk/api.js"></script>

Файл javascript должен использовать xmlHTTPrequest для подключения к файлам php, чтобы проверить, вошли ли вы в систему или нет, и затем опубликовать комментарий на моем сайте. Это очень просто, поскольку все, что вам нужно сделать, это нажать кнопку, которую она создает. Или нет.
Ну, он отлично работает на любой странице http://mainserver.co.uk, но на моем внешнем сервере он просто показывает ошибки консоли, такие как

XMLHttpRequest cannot load filename. Origin http://externalserver.com is not allowed by Access-Control-Allow-Origin. 

Ну, я знаю, это должно быть возможно, потому что твиттер, google и facebook могут все это сделать, так почему я не могу?
РЕДАКТИРОВАТЬ
Хорошо, спасибо. но это все еще проблема.
У пользователей есть сеансы на основном сайте, которые сообщают веб-странице, что они вошли в систему.
Используя этот код, я могу проверить это.

<?php
session_start();
header("Access-Control-Allow-Origin: *");
if (isset($_SESSION["user"]))
{
    echo "0";
}
else
{
    echo "1";
}
?>

Когда я вошел в систему и запустил этот код, он возвращает 0 на основном сайте, но 1 на внешнем сайте, как будто я только вошел в систему при тестировании на основном сайте

  • 2
    en.wikipedia.org/wiki/Same-origin_policy
  • 0
    Узнайте больше здесь: websitez.com/javascript-cross-domain-post-get
Показать ещё 5 комментариев
Теги:

1 ответ

0

Происхождение http://externalserver.com не разрешено Access-Control-Allow-Origin.

Если ваш JavaScript работает на example.com, а сервер, на который вы запрашиваете, находится в example.net. Удостоверьтесь, что он позволяет странице js запускается этим заголовком

   <?php header('Access-Control-Allow-Origin: http://example.com/ajax.html'); ?>

или

   <?php header('Access-Control-Allow-Origin: *'); ?>

(подстановочный знак позволяет любому домену отправлять запросы на ваш хост. Я рекомендую заменить звездочку на определенный домен, на котором будут запускаться скрипты)

Также вам нужно отправить заголовок Origin с ajax на сервер

Origin: http://example.com/ajax.html

XMLHttpRequest не может загрузить имя файла.

  • потому что вы не указали полный URL-адрес в запросе ajax. Но он работает с вашим основным сервером, потому что вы запускаете php в том же самом домене.
  • 0
    Спасибо, но не могли бы вы сказать мне, почему внешний сервер не может обнаружить сеанс на главном сервере, хотя я разрешил доступ ко всем доменам и добавил session_start ()
  • 0
    Извините, вы можете объяснить больше?
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню