2015-04-07 7 views
0

Я разработал httpHandler для выполнения моей загрузки PDF, в которой используется angularJS. Он работал нормально, пока я не переместил часть сервиса в другую область. Когда я переместил часть сервиса в другой домен, чем мое приложение UI AngularJS, оно начинает давать следующую ошибку.Загрузить PDF-документ с использованием Httphandler от AngularJS

XMLHttpRequest не может загрузить http://localhost:57072/DocumentHandler.ashx?Caller=1&token=1. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Происхождение 'http://localhost:54470' поэтому не допускается. Ответ получил код состояния HTTP 500.

Вот мой метод HttpHandler.

public void ProcessRequest(HttpContext context) 
 
     { 
 

 
      response.Clear(); 
 
      response.ClearContent(); 
 
      response.ClearHeaders(); 
 
      response.AddHeader("Access-Control-Allow-Origin", "*"); 
 
      response.AppendHeader("Access-Control-Allow-Methods", "OPTIONS,POST,GET"); 
 
      response.AppendHeader("Access-Control-Allow-Headers", "X-File-Name,X-File-Type,X-File-Size"); 
 

 
      response.ContentType = MIMEType.Get(filExtension); 
 
      response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); 
 

 
      using (FileStream stream = this.Open(filesDirectory + fileName)) 
 
      { 
 
       byte[] buffer = new byte[10240]; 
 
       int count = 0; 
 

 
       while ((count = stream.Read(buffer, 0, buffer.Length)) > 0) 
 
       { 
 
        response.OutputStream.Write(buffer, 0, count); 
 
        response.Flush(); 
 
       } 
 
      } 
 
     }

Может ли один пожалуйста, скажите мне, что здесь не так?

ответ

1

Это проблема с CORS. Вы должны сбить с толку сервер, чтобы включить совместное использование ресурсов Cross Origin. Это можно сделать в Web.config на сервере. CORS доступен в WebAPI 2.2, и вы должны посмотреть на перенос функциональности HttpHandler на веб-контроллер api, который возвращает HttpResponseMessage.

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