Angular JS阻止了跨源请求

时间:2016-02-09 06:08:54

标签: javascript angularjs

我在Angular JS中遇到以下错误。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.28:3000/system/organizations/logos/000/000/001/original/img-user.png?1453890721. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

我搜索解决方案,我找到了像

这样的解决方案
  <httpProtocol>
      <customHeaders>
        <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>

以上代码,我们需要添加--Web.Config

现在,我有简单的角度应用程序,我无法理解Web.config在哪里,我应该在哪里创建它?

请帮助我 - 我该怎么做才能解决问题?

先谢谢。

2 个答案:

答案 0 :(得分:0)

文件web.config应该是服务器应用程序(ASP.NET)的一部分,它可以自定义它(服务器)的行为方式。

  

Web.config是ASP.NET的主要设置和配置文件   Web应用程序。它是驻留在根目录中的XML文档   该站点或应用程序的目录,并包含有关如何的数据   网络应用程序将采取行动。

您在问题中提到的代码告诉服务器应用程序它的响应中应包含Access-Control-Allow-Origin标头。

然后您的角度应用程序会接收它并正常处理其余部分。

请注意,这是服务器端解决方案 - 与客户端角度脚本无关。

以下是有关web.config的教程。

答案 1 :(得分:-1)

我不确定您提到的建议解决方案是否适用于客户端(角度应用程序)。

您需要在服务器端配置上述解决方案。 使用客户端(从您的浏览器),您可能需要发送一些可以在角度应用程序中配置的属性。您可以在$ httpProvider的帮助下配置属性。 根据angular js文档

使用$ httpProvider更改$ http服务的默认行为。 因此,我们可以使用此服务,并可以设置将随每个请求传递的属性。您很可能需要配置这些设置

这里我在主app.js文件中配置它,该文件定义了名为app

的应用程序
(function () {
    'use strict';

angular.module('app', []).config(appConfig).run(appRun)

appRun.$inject = ['$rootScope','$location','$state','$stateParams', '$log'];

appConfig.$inject = ['$httpProvider'];

/**
 * To give http $httpProvider default values
 * @param $httpProvider
 */
function appConfig($httpProvider){
    $httpProvider.defaults.useXDomain = true;
    $httpProvider.defaults.withCredentials = true;
    delete $httpProvider.defaults.headers.common["X-Requested-With"];
    $httpProvider.defaults.headers.common["Accept"] = "application/json";
    $httpProvider.defaults.headers.common["Content-Type"] = "application/json";
}


function appRun ($rootScope, $location, $state, $stateParams, $log) {
    console.info('Inside appRun');
}
})();

希望这会有所帮助。 快乐学习:)