После поиска в stackoverflow я не вижу решения. У меня есть код jquery:
<script>
$('input#submit').click( function() {
$.ajax({
url: 'http://localhost:8081/rpc/api',
type: 'post',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({"jsonrpc": 2.0, "method": "entidades","params": {"file": "entidades.json"}}),
success: function(data) {
alert(data);
},
error:function(e){
console.log(e);
}
});
});
Я пытаюсь отправить json в параметр данных в файл с сервером бутылок, который обрабатывает json и возвращает что-то.
Проблема в том, что когда я выполняю это с хром или другого браузера, я получаю это в консоли:
OPTIONS http://localhost:8081/rpc/api 405 (Method Not Allowed)
XMLHttpRequest cannot load http://localhost:8081/rpc/api. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
Я думаю, проблема в том, что я выполняю jquery в локальном. Если это проблема, как можно сделать то же самое?
Это похоже на запрос перекрестного домена, который по умолчанию не разрешен большинством браузеров. Даже просто разные номера портов сделают запрос на перекрестный домен. Вы можете рассматривать CORS как возможное решение.
http://www.html5rocks.com/en/tutorials/cors/
Другое решение - сделать обратный прокси-сервер
Access-Control-Allow-Origin означает, что вы не можете выполнять перекрестные вызовы. https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
Единственный способ решить эту проблему - позволить CORS на сервере. Я думаю, что есть другое обходное решение, использующее JSONP вместо использования $.ajax(), но я никогда не использовал его