在服务器端我有一个C#web api,包括一个在类级别上归属的控制器:
[EnableCors(origins: "http://localhost:51664,http://localhost,...", headers: "*", methods: "*")]

我可以进行ajax调用,例如形成localhost就好了。
现在我开始使用AngularJS,http.get-method失败,并显示以下消息:
XMLHttpRequest无法加载http://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。
这是我的AngularJS代码:
<script>
var myApp = angular.module('myApp', []);
myApp.controller("myController", function($scope, $http) {
var onSuccess = function(data, status, headers, config) {
$scope.data = data;
};
var onError = function(data, status, headers, config) {
$scope.error = status;
}
var promise = $http.get("http://localhost:8081/DividendsManager.Web.Api/api/securities/GetSecurities?yearsDividendsDontDecrease=40");
promise.success(onSuccess);
promise.error(onError);
});
</script>
&#13;
在Fiddler,我可以看到,AngularJS-HTTP-Get请求的标题有一个&#34; Origin:null&#34;入口,这似乎与问题有关。我认为,如果相反&#34; null&#34;价值将是&#34; http://localhost&#34;,它应该有用。
任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:0)
可能是因为在您的[EnableCors]
属性中,您需要将headers: "", methods: ""
更改为headers: "*", methods: "*"
吗?
此外,您不应在origins
网址的末尾添加正斜杠(如果您这样做)。
答案 1 :(得分:0)
我们在项目中遇到了同样的问题,我们根据各种网站的建议尝试了很多选项。但在我们的案例中工作/工作的事情是编写自定义CORS提供程序here。
答案 2 :(得分:0)
Upppps!
今天在新鲜空气中奔跑时,我突然意识到为什么Origin无效。是的,因为我没有在IIS中调用网站,而是直接在文件系统中打开文件。当然,这样做时没有有效的URL,并且Web服务器的Origin为null。