Chrome显示“访问控制允许来源”错误

我正在使用jquery将数据发布到服务器,服务器接收到数据,但chrome仍显示错误:

XMLHttpRequest cannot load `myServer:63373/api/sendData`. Origin `myServer:63385` is not allowed by Access-Control-Allow-Origin. 

这是我的js代码:

  $.ajax({ type: 'POST', url: 'myServer:63373/api/SendData', crossdomain: true, async: true, data: myData, dataType: 'json', success: function(){ alert('success'); } }); 

奇怪的是,请求后显示“成功”,服务器确实收到了数据,但随后错误消息显示在控制台中。 有没有办法避免这个消息?

感谢上面的所有答案,但我想我找到了方法,在我解决这个问题之前,我试图使用两种方法, 在ASP.Net MVC中设置Access-Control-Allow-Origin – 最简单的方法 ,87票和32票,我在两个不同的地方找到答案,并且都应用了它们,但它没有用。 本周早些时候,我尝试删除web.config中的代码并将代码保留在C#中,它可以正常工作! 不敢相信这两种解决方案有冲突。

无论如何,希望这可以帮助别人。

“Access-Control-Allow-Origin不允许”是原因。 简而言之,您通常不能对您的javascript所包含的网页中的其他域/端口/协议进行XHR调用。

现代浏览器允许您在服务器管理员的许可下解决此问题。

您使用XHR2 API发出Ajax请求( http://www.html5rocks.com/en/tutorials/cors/

在服务器端,您需要发出以下标头以允许从提供包含您的javascript的页面的域进行访问:

 Access-Control-Allow-Origin: http://your-page-domain.com Access-Control-Allow-Credentials: true 

如果情况如此

  • 您的脚本托管在另一台服务器上

  • 或子域名

  • 或尝试用另一个端口打url

这是跨多米诺的要求。 jquery无法满足跨域请求。

如果这是你的问题,那么你应该使用jsonp这个“jsonp”允许跨域请求。

尝试使用jsonp执行此操作。

对于jsonp,每个调用都有一个回调意味着在url中会有一个值,你必须在php中发送respnse这个回调

试试这个: –

 $.ajax({ type: 'POST', url: 'myServer:63373/api/SendData', crossdomain: true, async: true, data: myData, dataType: 'jsonp', success: function(){ alert('success'); } }); 

在PHP中

 wrap your response in $_GET['_callback']."(".$response.")"; and echo it 

你会得到json的回应。