Ответ скрипта IE9 заблокирован из-за несоответствия типа mime
Я использую следующий фрагмент кода для загрузки данных из таблицы Google fusion как json.
var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", "http://tables.googlelabs.com/api/query?sql=select * from 588320&hdrs=false&jsonCallback=LoadTable");
отлично работает в IE8, FF, Chrome, но теперь IE9 не знает, как обрабатывать обратный вызов, потому что типы ответа и mime не совпадают. IE9 сообщает о следующей ошибке сценария при использовании jsoncallback param, потому что ему не нравится тип mime.
SEC7112: скрипт из http://tables.googlelabs.com/api/query?sql=select * от 588320&hdrs=false&jsonCallback=LoadTable был заблокирован из-за несоответствия типа mime.
есть ли обходной путь, если мне не нужно размещать src локально (или я делаю что-то неправильно)?
Response Headers
Content-Type text/plain; charset=UTF-8
Content-Encoding gzip
Transfer-Encoding chunked
Date Fri, 13 May 2011 02:19:11 GMT
Expires Fri, 13 May 2011 02:19:11 GMT
Cache-Control private, max-age=0
X-Content-Type-Options nosniff
X-Frame-Options SAMEORIGIN
X-XSS-Protection 1; mode=block
Server GSE
Request Headers
Host tables.googlelabs.com
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Cache-Control max-age=0
2 ответов
проблема в том, что Google посылает X-Content-Type-Options: nosniff
объявление и возврат файла JavaScript без типа JavaScript MIME. Это можно исправить, только удалив объявление nosniff или установив тип MIME, чтобы указать, что файл на самом деле является скриптом.
Я отправил письмо в Google об этом один.
Я бы просто вынуть fileref.setAttribute("type", "text/javascript");
, Так как вероятность обновления MIME-типа сервером непредсказуема.