2012-01-11 3 views
2

Я написал веб-сервис. Я звоню на этот веб-сервис с помощью JavaScript. Я называю это из разных доменов. Для этого я добавил [System.Web.Script.Services.ScriptService] недвижимость в веб-сервис. Из JavaScript я звоню в службу, используя XMLHttpRequest. Я тестировал его с помощью Firefox, и все было хорошо, когда. Но он не работал в IE.Вызов веб-службы перекрестного домена asmx с использованием JavaScript

После некоторого поиска я обнаружил, что это проблема, связанная с Перекрестный домен, вызывающий. Я рассмотрел некоторые из вопросов, размещенных здесь. И тогда я сделал следующие изменения в своем коде -

  1. С JavaScript Я сейчас вызова службы с помощью XDomainRequest.

  2. Я добавил следующие строки BEFOR заявления, возвращения в веб-сервис - HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*"); HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Credentials", "true"); return result;

Он все еще работает отлично в Firefox. но в IE8 (по моим сведениям, XDomainRequest не будет работать в более низких версиях IE), он показывает ошибку (XDomainRequest.onerror).

Я что-то упустил?

ответ

-1

Ваш веб-сервис работает через HTTP правильно?

Я не рекомендую использовать родной XMLHttpRequest, чтобы сделать AJAX запрос, может быть, вы должны использовать Jquery, чтобы сделать это, я всегда делаю таким образом, и работает во всех современных браузерах:

т.е.

function Activate(EmailId, controle) { 
    $.ajax({ 
     type: "POST", 
     url: "/Page/Method", 
     data: "&EmailId=" + EmailId, 
     success: function (message) { 
      $(controle).text(message); 
     } 
    }); 
} 

EDIT: сделать междоменные запросы вы можете использовать James Padolsey плагин, и сделать что-то вроде этого:

$('#container').load('http://google.com'); 

$.ajax({ 
    url: 'http://news.bbc.co.uk', 
    type: 'GET', 
    success: function(res) { 
     var headline = $(res.responseText).find('a.tsh').text(); 
     alert(headline); 
    } 
}); 
+2

он пытается сделать запрос перекрестного домена - это не сработает. Кроме того, jQuery просто обертывает XHR. –

+0

извините, исправлено! –

+0

Важно понимать, что в плагине Джеймса используется YQL, чтобы отскакивать запросы через стороннюю третью сторону, которая дополняет их поддержкой JSONP, а не фактически решая основную проблему перекрестного происхождения. –

1

Суть вашей проблемы в IE является то, что XDomainRequest не поддерживает предварительно пульсирующей необходимо сделать кросс- запрос домена, который включает заголовок Content-Type. Я считаю, что это зафиксировано в IE10, но even IE9 doesn't fully support CORS.

Чтобы надежно сделать междоменные запросы ScriptServices в браузерах, которые не поддерживают CORS, a server-side proxy - это, к сожалению, лучший выбор.

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