создать файл JavaScript для использования на разных серверах - PullRequest
0 голосов
/ 03 октября 2018

Я хочу создать файл JS, который другие могут включить на свои веб-сайты, чтобы они могли ссылаться на функции, которые обращаются к моей БД, используя API-интерфейс, аналогичный кнопке «Мне нравится в Facebook», которая показывает общее число избранных и кому из ваших друзей понравилась страница.В рамках моего тестирования я делал следующее: JS-файл

function getItemRating(id){
    var result = "";
    $.ajax({
        type: "POST",
        url: "http://siteurl.com/api/rating.php",
        data: {i : id},
        dataType: "json",
        async: false,
        success: function(data) { // callback for successful completion
          result = data;
        },
        error: function() { // callback if there's an error
          result = 'error';
        }
      });
    return result;
}

В справочный файл входят:

header("Access-Control-Allow-Origin: *");

, а на другом сервере я пробовал несколькоспособы, в том числе:

    <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>

<script type="text/javascript" src="www.siteurl.com/api/rating-file.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    var result = getItemRating(1);
    console.log(result);


});
</script>
</head>
<body></body>
</html>

Но в настоящее время я получаю сообщение об ошибке в консоли:

VM133: 1 Доступ к XMLHttpRequest по адресу http://siteurl.com/api/rating.php' от источника 'http://otherurl.com' был заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

siteurl.com = myсервер, на котором находится файл js (с функцией) otherurl.com = другой сервер, на котором находится html, включая js *

1 Ответ

0 голосов
/ 04 октября 2018

Сообщение об ошибке говорит о том, что проблема связана с ответом на предварительный запрос, но вы не должны инициировать его в первую очередь.

Удалить:

contentType: "application/json; charset=utf-8",

потому что:

  • Это ложь.Вы не отправляете JSON в своем GET-запросе.
  • Установка для этого типа содержимого значения запускает предварительный запрос.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...