2013-09-05 4 views
1

У меня возникла таинственная проблема, когда Chrome отменяет запросы AJAX с перекрестным происхождением, когда они сталкиваются с перенаправлением HTTP. На вкладке «Сеть» она отображается как «(отменена)», а заголовки или тело ответа недоступны.Хром отменяет CORS XHR при перенаправлении

Вот поток:

  1. страница нагрузки на HTTP: запрос //
  2. POST для входа конечной точки на https: //
  3. 303 ответа
  4. Запрос отменен.

Вот в JS (от ajaxtest.html): чистые внутренние

var r = new XMLHttpRequest(); 
r.open('POST', 'https://dev.example.com/appName-rest/login', true); 
r.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
r.send(JSON.stringify({"username":"myusername","password":"myrealpassword"})); 
r.send(); 

Chrome показывает, что сервер ответил с этими заголовками:

HTTP/1.1 303 See Other 
Date: Thu, 05 Sep 2013 17:54:21 GMT 
Server: Apache/2 
Access-Control-Allow-Origin: http://dev.example.com 
Access-Control-Allow-Credentials: true 
Location: https://dev.example.com/appName-rest/j_spring_cas_security_check?ticket=xxxx.example.com 
Vary: Accept-Encoding,User-Agent 
Content-Encoding: gzip 
Content-Length: 52 
Connection: close 
Content-Type: text/plain; charset=UTF-8 

И он говорит: URL_REQUEST_BLOCKED_ON_DELEGATE

ли кто-нибудь знает, почему это не удается?

+0

Вы используете WebService? – PabloWeb18

+0

Не уверен .. Думаю, что да. Но код - это просто javascript. –

ответ

2

Кажется, вы пытаетесь сделать Cross-Origin Request with Preflight, потому что настройка 'Content-Type': 'применение/JSON. Предварительно запрошенные запросы с переадресацией отклоняются CORS specs.

0

Вы отправляете этот метод дважды: r.send();

Пожалуйста, попробуйте следующее

var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "YOUR_URL", true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

    xhr.onreadystatechange = function (event) { 
     if (xhr.readyState === 4 && xhr.status === 200) { // if complete and success 
      return xhr.responseText; 
     } 
    }; 
    xhr.withCredentials = true; // OPTIONAL : I don't know if you need it for CORS Requests 
    xhr.send("username=YOUR_USERNAME&password=YOUR_PASSWORD"); 

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

  • Нет связанных вопросов^_^