В очередном проекте необходимо было использовать кросс-доменный аякс. Конечно, воспользовался решением предлагаемым библиотекой jQuery.
Написал всё честь по чести, два почти одинаковых запроса, на один и то же домен, проверяю. Первый запрос проходи на ура, второй выдает ошибку:
XMLHttpRequest cannot load http://domain-name.example/test?params.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://test.local' is therefore not allowed access.
А вот приблизительный вид запросов:
$.ajax({
url : 'http://domain-name.example/test?params',
dataType : 'jsonp',
jsonp : 'callbackFuncName',
});
и
$.ajax({
url : ' http://domain-name.example/test?params2',
dataType : 'jsonp',
jsonp : 'callbackFunc2Name',
});
И вот второй вызов и давал ошибку.
Если внимательно посмотреть, то видно, что вся разница в вызовах — это пробел в значении url перед http.
Не знаю ж откуда он там взялся, это пробел. Но мне он стоил нескольких часов гугления и экспериментов. Узнал за это время что-то новое для себя по ajax, jsonp etc.
Когда заметил пробел и убрал его, то всё замечательно заработало!
Так что вот. Очередной призыв быть внимательным и аккуратным со своим кодом :)
P.S. А вообще удивительно, хотя я могу не охватывать все варианты, но почему в строке url не вырезается на уровене библиотеки jQuery пробел в начале строки.