2016-04-12 2 views
0

Я пытаюсь включить CORS на моем веб-сайте ASP.Net MVC. Ссылка, которую я использую, может быть найдена here.Ошибка при попытке включить CORS в веб-сайте ASP.Net MVC

Я загрузил пакет nuget для CORS и применил следующие изменения к моему коду.

Я добавил модуль CORS к Web.Config, как показано ниже:

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    <!---CORS--> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="MvcCorsHttpModule" 
     type="Thinktecture.IdentityModel.Http.Cors.Mvc.MvcCorsHttpModule"/> 
    </modules> 
    <!---CORS--> 
    <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> 

В Global.asax.cs, я добавил:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    //--CORS 
    RegisterCors(MvcCorsConfiguration.Configuration); 
} 

private void RegisterCors(MvcCorsConfiguration corsConfig) 
{ 
    var corsAttr = new EnableCorsAttribute("https://www.youtube.com", "*", "*"); 
    corsConfig.EnableCors(); 

} 
//xxCORS 

Но я получаю сообщение об ошибке с MvcCorsConfiguration:

Название «MvcCorsConfiguration» не существует в текущем контексте.

Нужно ли добавить пространство имен? Пожалуйста помоги!

+0

Какую версию ASP.NET MVC вы используете? – AGB

+0

@AGB: Я использую версию 5.2. Пожалуйста, помогите, если вы нашли, что не так. Я застрял в этом часами !. Я просто пытаюсь воспроизвести видео с youtube, и он продолжает давать эту ошибку: заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Поэтому исходный «null» не имеет доступа ». –

+0

Я думаю, что учебник, который вы используете, немного устарел. Можете ли вы попробовать [этот пакет Nuget] (https://www.nuget.org/packages/Thinktecture. IdentityModel.SystemWeb /) и следуйте [этому образцу] (https://github.com/IdentityModel/Thinktecture.IdentityModel/tree/master/samples/SystemWeb/ClaimsAuthorizeSample/ClaimsAuthorizeSample) от создателей проекта? – AGB

ответ

0

Если вы хотите сделать запросы ajax для перекрестных доменов к вашему приложению mvc, тогда вам нужно только включить CORS. Но если вы делаете запрос на перекрестный домен ajax из вашего приложения mvc на другие url, вам не нужно включать CORS в вашем приложении mvc. Просто протестируйте этот сценарий. создал образец приложения mvc, затем сделал запрос ajax на url http://jsonplaceholder.typicode.com/posts/1, он работал нормально. Одним из решений было бы, переместите свою логику в веб-api и включите CORS, затем вызовите этот URL-адрес из вашего mvc или любого другого приложения.

+0

Прошу прощения, я сделал я действительно не понимаю, что вы сказали. Я играю видео с youtube с помощью iframe. Видео воспроизводится, но я продолжаю получать эту ошибку «Origin null не найден в заголовке Access-Control-Allow-Origin». Я не очень хорошо знаком с json или xml. Не могли бы вы объяснить? И я не использую webapi .. Я создаю сайт в MVC. –

+0

Пробовал воссоздать вашу проблему. Но я не получаю никаких ошибок. Я поместил следующий код на страницу cshtml. Он отлично работает во всех браузерах. Не нужно настраивать приложение mvc для использования CORS. Так что PLS попробовать эту вещь. удалите настройку CORS, которую вы сделали, или создайте базовое приложение mvc и вставьте iframe tag.check, если вы получаете ошибку. –

+0

Я пробовал тот же код в новом проекте mvc и получил ту же ошибку. Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу https://gg.google.com/csi?v=2&s=youtube&action=embed& (Причина: заголовок CORS 'Access-Control-Allow-Origin' не совпадает '*'). Получил эту ошибку в mozilla. –