相关疑难解决方法(0)

XMLHttpRequest无法加载XXX没有'Access-Control-Allow-Origin'标头

TL;博士; 关于同源政策

我有一个Grunt进程,它启动了express.js服务器的实例.刚刚开始提供空白页面,并且Chrome中的开发人员控制台的错误日志中出现以下内容(最新版本),这一点工作非常精细:

XMLHttpRequest无法加载https://www.example.com/ 请求的资源上没有"Access-Control-Allow-Origin"标头.因此不允许来源" http:// localhost:4300 "访问.

什么阻止我访问该页面?

javascript same-origin-policy cors

92
推荐指数
2
解决办法
9万
查看次数

AngularJS:请求的资源上没有"Access-Control-Allow-Origin"标头

我正在写我的webApp,而且我正在使用AngularJS.在这个应用程序中,我创建了一个名为script.js的文件,并报告此代码:

var modulo = angular.module('progetto', ['ngRoute']);

    // configure our routes
    modulo.config(function ($routeProvider, $httpProvider) {
        $routeProvider

            // route for the home page
            .when('/', {
                templateUrl: 'listaFilm.html',
                controller: 'listaController'
            })

            // route for the description page
            .when('/:phoneName', {
                templateUrl: 'description.html',
                controller: 'descriptionController'
            });


            $httpProvider.defaults.headers.common['Access-Control-Allow-Origin'] = '*';

    });


    modulo.controller('listaController', function ($scope, $http) {
        $http.get('https://api.getevents.co/event?&lat=41.904196&lng=12.465974').success(function (data) {
            $scope.names = data;
            }).
            error(function (data, status) {
                $scope.names = "Request failed";
            });
    });
Run Code Online (Sandbox Code Playgroud)

使用此代码,我按照RESTful原则调用API.当我运行代码时,我遇到了这个问题:

XMLHttpRequest无法加载https://api.getevents.co请求的资源上没有"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:8383 "因此不允许访问.

在网上阅读我明白我有一个叫CORS的问题...我已经尝试了几个解决方案,但我没有解决问题.
我该如何解决这个问题?
我必须添加什么代码来修复它?

html javascript xmlhttprequest cors angularjs

45
推荐指数
2
解决办法
30万
查看次数

升级到Cordova 5.0 + cordova-android@4.0后,Ajax请求失败

我最近升级到Cordova 5.0(和Cordova Android 4.0),从那时起,我的应用程序无法再访问外部资源.

我仍然<access origin="*" />在config.xml中(如前所述),我仍然<uses-permission android:name="android.permission.INTERNET" />在AndroidManifest.xml中(如前所述),但是ajax调用被拒绝而没有解释("textStatus"参数是"错误","errorThrown"参数是null,xhr.state()返回"rejected").

我已经验证没有请求到达服务器,所以它似乎被Android停止了,但是日志没有给出任何解释为什么......

我可以从Android浏览器访问有问题的网址,而不是从应用程序访问.

Ajax请求是通过向Backbone.sync()的调用由Backbone.js的,它最终调用jQuery的$.阿贾克斯().我没有改变任何关于如何进行通话的信息​​......只是升级了cordova.

在Cordova 5.0中是否有针对网络请求的新要求​​/设置,或者我需要做的与以前的Cordova版本不同的任何事情?

有谁知道我可以获得更多关于为什么Android和/或Cordova拒绝请求的信息?

ajax android cordova

30
推荐指数
1
解决办法
2万
查看次数

启用CORS AngularJS以发送HTTP POST请求

我想通过将表单提交到我的服务器来发送HTTP POST请求,该服务器位于不同的域中(并使用node.js在服务器脚本中启用了cors).

这是所有Angular配置都是的脚本:

var myApp = angular.module('myApp', ['ngRoute']);

myApp.config(function($routeProvider, $locationProvider, $httpProvider) {

  $httpProvider.defaults.useXDomain = true;
  delete $httpProvider.defaults.headers.common['X-Requested-With'];

  $routeProvider
  .when('/', {
    controller: 'RouteCtrl',
    templateUrl: 'views/home_views.html'
  })
  .when('/login', {
    controller: 'RouteCtrl',
    templateUrl: 'views/login_views.html'
  })
  .when('/register', {
    controller: 'RouteCtrl',
    templateUrl: 'views/register_views.html'
  })
});

myApp.controller("UserController", function($scope, $http) {
  $scope.formData = {};
  $scope.clickMe = function() {
    console.log("Yay");
      $http({
        method: 'POST',
        url: 'http://localhost:8183/user/register',
        data: $.param($scope.formData),
      })
      .success(function(data) {
        console.log(data);
        if(!data.success) {
          console.log("error here");
        } else {
          console.log("error there");
        }
      });
  }
}); ...
Run Code Online (Sandbox Code Playgroud)

我正在使用AngularJS 1.2.22,正如本教程中所述(启用CORS …

javascript http-post httprequest cors angularjs

17
推荐指数
1
解决办法
8万
查看次数

XMLHttpRequest无法加载URL.Access-Control-Allow-Origin不允许原点

我想创建一个使用来自其他域的xml数据的小型网站.(Weather Underground的天气数据:www.wunderground.com).我只使用html和javascript,并在Visual Studio Express 2012 for Web中编写所有内容.

我按如下方式制作并发送xml请求:

url = "http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml";

xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
Run Code Online (Sandbox Code Playgroud)

问题是我在Google Chrome(版本29.0.1547.66)开发人员控制台中收到以下错误:

XMLHttpRequest cannot load http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml. Origin http://localhost:49933 is not allowed by Access-Control-Allow-Origin. 
Run Code Online (Sandbox Code Playgroud)

或者在Internet Explorer(版本10.0.8)控制台上:

SEC7118: XMLHttpRequest for http://api.wunderground.com/api/3c6e3d838e217361/geolookup/conditions/forecast/q/51.11999893,-114.01999664.xml required Cross Origin Resource Sharing (CORS). 
Run Code Online (Sandbox Code Playgroud)

据我了解,CORS(http://enable-cors.org/)需要客户端和服务器都努力工作.我想假设Weather Underground API知道它在做什么并且已经适当地启用了一些东西,例如将响应头设置为包含'Access-Control-Allow-Origin:*',我知道我在遇到同样的问题时我使用另一个API提供商(World Weather Online)尝试相同的代码.所以我认为这是我应该能够在我的客户端代码中修复的东西.另一个SO答案,建议是修复服务器端头: CORS与XMLHttpRequest

我试图找到答案,但不理解如下文章: http://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/ http:// saltybeagle.com/2009/09/cross-origin-resource-sharing-demo/

javascript xmlhttprequest cors

7
推荐指数
1
解决办法
5万
查看次数