XMLHttpRequest cannot load http://mywebservice. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. 当我尝试从我的代码中运行我的Web服务时,出现此错误。 我试图find它,并尝试了许多解决scheme,这是我在网上find的build议。 粘贴下面的代码。 <form name="LoginForm" ng-controller="LoginCtrl" ng-submit="init(username,password,country)"> <label>Country</label><input type="text" ng-model="country"/><br/><br/> <label>UserName</label><input type="text" ng-model="username" /></br></br> <label>Password</label><input type="password" ng-model="password"> </br> <button type="submit" >Login</button> </form> 而控制器形成相应的js是: app.controller('LoginController', ['$http', '$scope', function ($scope, $http) { $scope.login = function (credentials) { […]
更新:我强烈build议不要在XDomainRequest中投入任何时间,因为这是一个非常糟糕的实现,有很多限制。 它基本上只适用于非SSL服务器的GET请求,所以你不妨使用jsonp或其他。 我正在使用CORS来调用一个跨域API,但是Internet Explorer正在给出问题。 CORS应该可以在IE8和IE9中通过XDomainRequest对象,但是我不能让事情工作.. JQuery 拒绝为XDomainRequest提供本机支持,但是build议使用几个jQuery插件来增加这种支持。 这个主题提出了两个这样的插件: jQuery.XDomainRequest.js和xdr.js ,已经报道过。 Afaik,插件应该自动覆盖jQuery.ajax行为。 我在这里find了另一个插件。 我把一个小小的演示页面与各自的插件jQuery.XDomainRequest和xdr和jquery.ie.cors执行ajax请求到启用CORS的服务器。 这些页面在Chrome和Firefox中工作,但IE8 / 9立即抛出权限被拒绝的错误(甚至在发出请求之前)。 这MSDN文章build议添加另一个处理程序xhr.onprogress = function() {}; 但我试过这个,它也不工作。 任何线索我做错了什么? 我也使用MS虚拟服务器testing了IE8,但它有完全相同的问题。 编辑:好的,所以我想通过HTTPS使用POST的问题的一部分。 显然XDomainRequest不允许通过HTTPS的CORS。 我可以切换到HTTP,但我真的需要POST。 编辑2:看到这个问题在Github的这个故事的结尾。 事实certificate,使用HTTP POST时,xDomainRequest只能以text/plain对请求主体(参数)进行编码。 这几乎使得它毫无价值,因为每个人都使用application/x-www-form-urlencoded或multipart/form-data 。
我无法弄清楚为什么我的.htaccess头设置不起作用。 我的.htaccess文件内容: Header set Access-Control-Allow-Origin * Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" Header always set Access-Control-Allow-Headers "*" RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L] 但是,当我删除Header的,并将其添加到index.php然后一切正常。 header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); header("Access-Control-Allow-Headers: *"); 我错过了什么?
我的网站使用http和https协议; 它不会影响内容。 我的网站使用jQuery ajax调用,也填充页面上的一些区域。 现在,我想通过https做所有的ajax调用。 (请不要问我为什么:))当我在与https协议的页面上,Ajax请求正在工作。 当我在与http协议的页面上,我得到一个JavaScript错误:访问受限制的URI被拒绝 我知道这是一个跨域问题(实际上,这是一个交叉协议问题),我知道我应该在当前页面上使用与Ajax调用相同的协议。 不过,我希望所有的ajax调用都是https,并在通过http提供的页面上调用它们。 有没有什么解决方法来实现这个(一些JSON /代理解决scheme?),或者是不可能的?
我的WebAPI部署在Intranet环境中。 这意味着安全并不是我关心的问题。 CORS似乎对客户更友好 , 更容易实施 。 任何其他问题,我可能错过了?
这个问题涉及跨源资源共享(CORS, http://www.w3.org/TR/cors/ )。 如果在发出CORS请求时发生错误,则Chrome(以及AFAIK其他浏览器)会将错误logging到错误控制台。 示例消息可能如下所示: XMLHttpRequest无法加载http://domain2.example 。 Access-Control-Allow-Origin不允许原始http://domain1.example 。 我想知道是否有一种方法来编程方式获取此错误信息? 我已经尝试在try / catch中包装我的xhr.send()调用,我也尝试添加一个onerror()事件处理程序。 两者都没有收到错误信息。
我开发了一个PhoneGap应用程序,现在正在转换到一个手机网站。 一切工作顺利,除了一个小故障。 我通过POST请求使用某个第三方API,在应用程序中正常工作,但在移动网站版本中失败。 经过仔细观察,看起来像AngularJS(我猜是浏览器)首先发送一个OPTIONS请求。 今天我学到了很多关于CORS的知识,但似乎无法弄清楚如何完全禁用它。 我没有访问该API的权限(所以在这一方的更改是不可能的),但他们已经将我正在工作的域添加到他们的Access-Control-Allow-Origin头。 这是我正在谈论的代码: var request = { language: 'fr', barcodes: [ { barcode: 'somebarcode', description: 'Description goes here' } ] }; } var config = { headers: { 'Cache-Control': 'no-cache', 'Content-Type': 'application/json' } }; $http.post('http://somedomain.be/trackinginfo', request, config).success(function(data, status) { callback(undefined, data); }).error(function(data, status) { var err = new Error('Error message'); err.status […]
我正试图通过CORS将表单数据从www.siteone.com发布到www.sitetwo.com。 我的ajax代码是这样的: <script> $(document).ready(function(){ $("#submit").live('click',function() { var url = "http://www.sitetwo.com/cors.php"; var data = $('#form').serialize(); jQuery.ajax({ url : url, type: "POST", data : $('#form').serialize(), }).done(function(response){ alert(response); }).fail(function(error){ console.log(error.statusText); }); return false; }); }); </script> www.sitetwo.com上的cors.php文件如下: <?php header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); echo "hai"; ?> 但仍然存在Access-control-Allow-Origin错误。 抛出的错误是这样的: XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed […]
我遇到了一个Ajax请求的麻烦。 我得到了错误 No 'Access-Control-Allow-Origin' header is present on the requested resource. 所以我试过的是这个jQuery ajax请求: var request = $.ajax({ type: 'GET', url: url, dataType: "json", xhrFields: { withCredentials: true }}); request.done(function(data){ console.log(data); }); 但它仍然没有工作。 我仍然收到错误。 我应该如何解决这个问题?
任何人都知道是否可以使用servicestack框架来创buildCORS REST服务? 我一直对我对WCF REST的东西抱怨好几天 – 完全没用。 谢谢