[JS, jquery] получить скрипт через CORS ajax

kill-still

Есть скриптик сбора статистики от байду: http://hm.baidu.com/h.js?efb6ea88d551e4336a3e3e0b972466d8
Пытаюсь его загрузить асинхронно:

$.ajax({
type : "GET",
async : true,
cache : false,
crossDomain : true,
xhrFields: {
withCredentials: true
},
success : function(data, textStatus, jqxhr) {
if (data) {
console.log(data);
} else {
console.log('empty responce');
}
},
dataType : 'script',
headers: {
/*'Access-Control-Expose-Headers' : '*',
'Access-Control-Request-Method' : '*',
'Access-Control-Request-Headers' : '*',
'Origin' : 'http://localhost:8080',*/
'Access-Control-Allow-Origin' : '*',
"Access-Control-Allow-Methods" : "*",
"Access-Control-Allow-Headers" : "*",
'Access-Control-Allow-Credentials' : true
},
url : 'http://hm.baidu.com/h.js?efb6ea88d551e4336a3e3e0b972466d8'
});

Если указать dataType: "script", то он ругается
Resource interpreted as Script but transferred with MIME type text/plain: "url"
и возвращает пустую строку.
Если указать dataType: "text/plain", то он ругается No 'Access-Control-Allow-Origin' (судя по документации, так и должен себя вести).
Подскажите пожалуйста, что я делаю не так?

agaaaa

Подскажите пожалуйста, что я делаю не так?
Ну наверное localhost не в списке Access-Control-Allow-Origin. Может они не позволяют грузить скрипт автономно. А только в составе их iframe.
Хотя судя по твоему коду ты почему-то решил, что Access-Control-Allow-Origin - это опция запроса. А на самом деле этот заголовок возвращает сервер, чтобы браузер знал кто из других сайтов имеет право слать такие запросы.

kill-still

Хотя судя по твоему коду ты почему-то решил, что Access-Control-Allow-Origin - это опция запроса.
Это из примеров всё взято, я в этом вообще не разбираюсь.
Может они не позволяют грузить скрипт автономно. А только в составе их iframe.
Почему тогда скрипт грузится если его в адресную строку вбить?
Если так указать, то тоже грузится с локалхоста:
<script src='http://hm.baidu.com/h.js?efb6ea88d551e4336a3e3e0b972466d8' type='text/javascript'></script>

khachin

Почему тогда скрипт грузится если его в адресную строку вбить?
Если так указать, то тоже грузится с локалхоста
Ответ на этот вопрос ты можешь получить у разработчика используемого тобой браузера.

kill-still

Да я думаю браузер тут не при чём. Я тут поразбирался немного - скрипт удаётся загрузить только до того, как страница отрендерилась (dom ready). Хз, каким хитровыебаным способом они это отслеживают. Видимо, борятся с накруткой счётчиков таким образом.
Оставить комментарий
Имя или ник:
Комментарий: