2012-01-10 2 views
3

Im способен выполнять запросы Http (POST/GET) с помощью XMLHttpRequest.Запрос Https с XMLHttpRequest

Я спрашиваю, как сделать запросы с URL, как «https://www.gmail.com» я пытался что-то вроде этого, но код состояния 0

var http = new XMLHttpRequest(); 
    var url = "https://www.gmail.com"; 

    http.open("GET", url); 
    http.onreadystatechange = function() {//Call a function when the state changes. 
      if(http.readyState == 4 && http.status == 200) { 
        //alert(http.responseText); 
       print("ok") 
      }else{ 
       print("cannot connect") 
       print("code:" + http.status) 
       print(http.responseText) 
      } 
    } 
    http.send(null); 

я всегда " не удается подключить "" код "0 и ничего не ответить

Любая идея?

ответ

5

Это собирается потерпеть неудачу по двум причинам:

1) URL-адрес «https://www.gmail.com» на самом деле пытается перенаправить вас на «https://mail.google.com/mail/", который, в свою очередь, попытается перенаправить вас на страницу входа. Это перенаправление не указывается как ошибка

2) Однако что более важно, вы не можете сделать XMLHttpRequests в другом домене, если только этот домен не поддерживает CORS (http://www.html5rocks.com/en/tutorials/cors/). GMail не поддерживает CORS, поэтому этот запрос не будет работать.

+0

В основном я делаю запросы на один веб-сайт .. gmail.com был примером .. Это все еще невозможно? – fran

+2

Да, из-за политики браузера того же происхождения вы не можете сделать запрос из одного домена другому, используя стандартный XHR. Обратите внимание, что есть другие механизмы, такие как JSON-P или CORS, которые вы можете использовать, но эти методы требуют, чтобы сервер выдавал ответ в определенном формате. – monsur

Смежные вопросы