Access-Control-Allow-Origin при вызове службы WCF REST из jQuery и JSON

0

У меня есть следующий код.

Метод WCF REST

    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "Account")]
    [OperationContract]
    string GetUniqueLoginId();

Клиентский вызов

$.ajax({
    type: "GET",
    url: serviceURL + 'Account',
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    success: app.onGetUniqueId,
    error: app.onAjaxError
 });

Когда я использую IE (11), он отлично работает, возвращая уникальный идентификатор. Но когда я использую хром, это дает мне следующую ошибку.

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin   'http://localhost:5553' is therefore not allowed access.

Как решить проблему? Любая помощь будет оценена по достоинству.

Теги:
rest
wcf

2 ответа

1

Необходимо включить CORS в службе, размещенной в IIS или IIS Express, добавив следующую конфигурацию в файл веб-конфигурации.

<system.webServer>  

<httpProtocol>  
  <customHeaders>  
    <add name="Access-Control-Allow-Origin" value="*" />  
  </customHeaders>  
</httpProtocol>
 ...

Установив его в *, мы разрешаем запросам любого источника обращаться к службе.

1

Это означает, что служба WCF, которую вы запрашиваете, имеет другое происхождение, чем приложение, которое ее вызывает, и, следовательно, ограничивается "политикой того же происхождения". Вам нужно будет использовать JSONP (для которого служба должна поддерживать jsonp) или CORS ( серверная сторона должна добавить заголовки CORS, позволяющие вам происходить)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню