【发布时间】:2016-04-22 11:17:06
【问题描述】:
在 MVC6 应用中启用了 CORS,并且启动看起来像:
我在ConfigureServices() 方法中添加了以下代码:
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials());
});
……
在配置Configure()
app.UseCors("AllowSpecificOrigin");
.......
我的代码尝试从另一个 url 下载 angular 模板,模板被下载(在 fiddler 中看到)。但是我的浏览器控制台说
XMLHttpRequest 无法加载 http://hsa-is-utl32.[mydomain].com/LayoutService//platform/templates/layout/topbanner.html。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://mydevbox.[mydomain].com' 不允许访问。
不知道怎么了??
【问题讨论】:
-
您应该包含更多您使用的完整代码。例如,包含中间件的顺序
Configure很重要。我的意思是app.UseCors("AllowSpecificOrigin");应该被称为不晚。其次,您应该写下您使用的 Angular 版本以及$http调用和app.config(function($httpProvider) {...}的外观。需要配置$http以在Ajax 请求中包含Access-Control-Allow-Origin。请参阅withCredentials: true、$httpProvider.defaults.useXDomain = true;、delete $httpProvider.defaults.headers.common['X-Requested-With'];等。 -
没用,我的角度配置看起来像:platform.config(["$provide", "$sceDelegateProvider", "$httpProvider", function ($provide, $sceDelegateProvider, $httpProvider) { $provide.constant('rootUrl', rootUrl); $sceDelegateProvider.resourceUrlWhitelist([ 'self', 'http://*.[domain].com/**', 'http://*.[domain] .gov/**' ]); $httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = true; $httpProvider.defaults.useXDomain = true; }]);
-
app.UseCors("AllowSpecificOrigin") 是 Configure() 方法中的第一个语句....
-
我的应用程序从另一个域下载 angular directiv js 文件,并且 angular 模板文件与 js 文件一起定位,但是当 angular 尝试下载模板时会产生错误。
-
您应该使用Fiddler 或 IE/Chrome 的开发者工具来查看 HTTP 流量并查看 Angular 发送的请求的所有 HTTP 标头。如果
X-Requested-With将被设置,那么你应该删除它(见上面的评论)。
标签: angularjs cors asp.net-core-mvc asp.net-core