Я пытаюсь сделать AJAX-вызов на внешний домен.Прочитав немного, я понял, что это невозможно.И я начинал погружаться в решение Proxy, но затем я нашел информацию о «межсайтовом xmlhttprequest с CORS»
Затем я понял, что, возможно, старые браузеры уже реализовали способчтобы сделать это, насколько это позволяет целевой домен, я думаю.
Итак, в этой безвестности я решил проверить захваченные заголовки HTTP.
Это GETПетиция
http://www.genome.jp/dbget-bin/www_bconv?dbkey=uniprot&acc=P11730
Используя любой броузер, я получаю нужную веб-страницу, но через вызов AJAX я получаю статус 0.
Но, с помощью сценария AJAX и использования firefoxдобавив Live HTTP заголовки, я вижу, что все идет хорошо
http://www.genome.jp/dbget-bin/www_bconv?dbkey=uniprot&acc=P62071
GET /dbget-bin/www_bconv?dbkey=uniprot&acc=P62071 HTTP/1.1
Host: www.genome.jp
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.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
Connection: keep-alive
Origin: null
HTTP/1.1 302 Found
Date: Sat, 28 Jan 2012 19:24:24 GMT
Server: Apache
Location: /dbget-bin/www_bget?mmu:66922
Content-Length: 0
Keep-Alive: timeout=60, max=1000
Connection: Keep-Alive
Content-Type: text/plain
Итак, есть 2 варианта:
1) он работает, но код имеет некоторыевид ошибки
2) Кажется, это работает, но на самом деле AJAX не может быть сделан для внешнего домена.Почему Live HTTP заголовки захватывают хорошие вещи?потому что цензура делается потом.
Каков ответ?
(код JavaScript)
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
alert(xmlhttp.readyState+' '+xmlhttp.status)
if (xmlhttp.readyState==4)
{
alert(xmlhttp.responseText);
}
}
if("withCredentials" in xmlhttp)
{
xmlhttp.open("GET","http://www.genome.jp/dbget-bin/www_bconv?dbkey=uniprot&acc=P11730",true);
xmlhttp.withCredentials = "true";
xmlhttp.onreadystatechange = handler;
xmlhttp.send();
}
}
</script>
</head>
<body>
РЕДАКТИРОВАТЬ: Таким образом, это похоже на использование CORS дополнительного заголовкадолжен быть включен на веб-сервере.Тогда я предполагаю, что это вариант 2).
Интересные ссылки
Способы обхода политики того же происхождения
http://anyorigin.com/
http://enable -cors.org /
http://remysharp.com/2011/04/21/getting-cors-working/