Я хочу получить доступ к информации из того же домена, но с другим номером порта. Для этого я добавляю Access-Control-Allow-Origin
с заголовком ответа.
Код сервлета: (присутствует на www.example.com:PORT_NUMBER)
String json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Allow-Origin", "*");//cross domain request/CORS
response.getWriter().write(json);
Код jQuery: (присутствует на www.example.com)
$.post('http://www.example.com:PORT_NUMBER/MYSERVLET',{MyParam: 'value'}).done(function(data)
{
alert(data);
});
Несколько раз я получаю эту ошибку (в консоли):
XMLHttpRequest cannot load 'http://www.example.com:PORT_NUMBER/MYSERVLET'
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Эта ошибка чаще всего возникает при первом запуске $.post
. Второй раз это позволяет.
Мой вопрос в том, что там отсутствует код servlet
или jQuery
?
Любое предложение будет оценено.
Update1
Я изменил:
response.setHeader("Access-Control-Allow-Origin", "*");
To:
response.setHeader("Access-Control-Allow-Origin", "http://www.example.com");
Затем я получаю эту ошибку в консоли:
XMLHttpRequest cannot load http://www.example.com:PORT_NUMBER/MyServletName
The 'Access-Control-Allow-Origin' whitelists only 'http://www.example.com'
Origin 'http://www.example.com' is not in the list,
and is therefore not allowed access.
[Примечание: белый список и источник совпадают, но все же он дает ошибку. Он работает иногда и иногда вызывает ошибку.]
Сообщите мне, если вам нужна дополнительная информация.