尝试在 ASP.Net MVC 网站中启用 CORS 时出错
Posted
技术标签:
【中文标题】尝试在 ASP.Net MVC 网站中启用 CORS 时出错【英文标题】:Error when trying to enable CORS in ASP.Net MVC website 【发布时间】:2016-08-02 10:37:19 【问题描述】:我正在尝试在我的 ASP.Net MVC 网站中启用 CORS。我一直在使用的参考链接可以找到here。
我下载了 CORS 的 nuget 包,并将以下更改应用于我的代码。
我在 Web.Config 中添加了 CORS 模块,如下所示:
<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”。
我需要添加命名空间吗?请帮忙!
【问题讨论】:
你使用的是什么版本的 ASP.NET MVC? @AGB:我使用的是 5.2 版。如果您能找到问题所在,请提供帮助。我已经坚持了好几个小时了!我只是想从 youtube 播放视频,但它一直给出这个错误:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。" 我认为您使用的教程有点过时了。你可以试试this Nuget package 并关注项目创建者的this sample 吗? 【参考方案1】:如果您想向您的 mvc 应用程序发出跨域 ajax 请求,那么您只需要启用 CORS。但是如果您是从您的 mvc 应用程序向其他 url 发出跨域 ajax 请求,那么您不需要启用 CORS在你的 mvc 应用程序中。刚刚测试了这个场景。创建了一个示例 mvc 应用程序,然后向 http://jsonplaceholder.typicode.com/posts/1 url 发出 ajax 请求,它工作正常。 一种解决方案是将您的逻辑移动到 web api 并启用 CORS,然后从您的 mvc 或任何其他应用程序调用此 url
【讨论】:
对不起,我不太明白你说什么。我正在使用 iframe 播放来自 youtube 的视频。视频已播放,但我不断收到此错误“在 Access-Control-Allow-Origin 标头中找不到 Origin null”。我对 json 或 xml 不是很熟悉。你能解释一下吗?而且我没有使用 webapi.. 我正在 MVC 中构建网站。 尝试重现您的问题。但我没有收到任何错误。我已将以下代码放在 cshtml 页面中。 在所有浏览器中都能正常工作。无需配置您的 mvc 应用程序即可使用 CORS。所以请试试这个东西。删除您所做的 CORS 设置或创建一个基本的 mvc 应用程序并插入 iframe 标记。检查您是否遇到错误。 我在一个新的 mvc 项目上尝试了相同的代码,并且得到了相同的错误。跨域请求被阻止:同源策略不允许读取位于gg.google.com/csi?v=2&s=youtube&action=embed& 的远程资源(原因:CORS 标头“Access-Control-Allow-Origin”与“*”不匹配)。在 Mozilla 中遇到此错误。以上是关于尝试在 ASP.Net MVC 网站中启用 CORS 时出错的主要内容,如果未能解决你的问题,请参考以下文章
带有 ASP.NET MVC 的 jquery - 调用启用 ajax 的 Web 服务
ASP.Net MVC 5 身份验证与另一个 MVC 5 身份网站
如何使用 Angular 2 在 POST 上启用 ASP.NET MVC 4 中的跨源请求
在 ASP.NET MVC 5 应用程序中启用 SSL 会导致 OpenIdConnectProtocolValidator 问题