2015-07-07 3 views
0

Я развернул проект веб-API до Azure Web-приложение. И из приложения angularjs я пытаюсь запросить $ http.get API. но это дает CORS (кросс-происхождения) исключение, хотя я включал его в своем Web API запуска конфигурацииВключение CORS для веб-API в Azure Web Apps

app.UseCors(CorsOptions.AllowAll); 

Я хочу, чтобы включить CORS для Azure Web App, что бы решить эту проблему, я считаю,

EDIT http://nearestbuyweb.azurewebsites.net/ это URL-адрес веб-приложения. Он пытается получить доступ к http://nearestbuyapi.azurewebsites.net/api/MenuBar, где происходит исключение.

Я думаю, что это невозможно с Azure Web App. MSDN Question

Пожалуйста, помогите!

+0

Чтобы уточнить, вы получаете исключение CORS, когда ваш сайт пытается сделать вызов API на 2-й сайт, или вы получаете его, когда второй сайт пытается сделать вызов API на ваш сайт? Включение CORS на вашем сайте позволит включить только первый сценарий. –

+0

Когда я получаю доступ к Web api из своего веб-проекта, я получаю сообщение об ошибке. Я хочу в основном включить CORS для Azure Web-приложения. – Dhanilan

ответ

0

К сожалению, ребята,

Проблема происходит только в моей корпоративной сети. Имея googled, я обнаружил, что корпоративная сеть может отключать запросы CORS. Нашел это здесь link

1
<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <clear /> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
      <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

Спасибо, но, похоже, не работает. – Dhanilan

+0

попробуйте, например, попросить скрипача или почтальона и проверить, работает ли он. Я использую именно эту конфигурацию и прекрасно работаю. –

+0

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

1

Вам необходимо удалить обработчик параметров в IIS с помощью web.config. http://eugeneagafonov.com/post/38312919044/iis-options-cors-aspnet-webapi-en

+0

Я использую Azure Web App, где мы не можем изменить IIS – Dhanilan

+0

. Вы редактируете web.config, не изменяя IIS напрямую. Вы перешли по ссылке? Кстати, так я работаю в Azure (веб-приложения). – dcinzona

1

У меня есть CORS в лазури, работающих с помощью этого:

WebApiConfig.cs:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 
     config.EnableCors(); 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "PublicApi", 
      routeTemplate: "api/v1/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

    } 
} 

Web.config:

<system.webServer> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers></system.webServer> 
+1

Спасибо @buKaneer, даже я делаю ту же конфигурацию. Он отлично работает на моей локальной машине (API и веб-хостинг в IIS в виде отдельных приложений), но когда я публикую в лазурном режиме, это не работает. – Dhanilan

+0

Разверните ли вы свой WebApi в Azure Web App или Mobile Services или облачные сервисы? – Dhanilan

+0

На веб-сайте, размещенном на Azure, есть ссылка http://get-json.azurewebsites.net/. CORS звонки сделаны здесь http://codepen.io/collection/XzVOeX/ – bUKaneer

3

Примечание: Вы можете использовать CORS настройки, чтобы позволить другим доступа к API вашего сайта. Не получать доступ к API других сайтов.

На основе ваших комментариев кажется, что вы получаете ошибку CORS при попытке сделать внешние запросы с вашего сайта. Именно такое поведение CORS должно блокировать.

Для устранения ошибок вам необходимо будет применить настройки конфигурации CORS на сайте, у которого API, с которым вы пытаетесь получить доступ.

В вашем случае вы хотите убедиться, что вы применяете изменения конфигурации на сайте http://nearestbuyapi.azurewebsites.net. НЕ на http://nearestbuyweb.azurewebsites.net/

+0

Это то, что я делаю @ Zain – Dhanilan

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