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

Chrome shows Access Control Allow Origin error

本文关键字:错误 显示 访问控制 Chrome      更新时间:2023-09-26

我正在使用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'); }
        });

奇怪的是,"成功"出现在请求之后,服务器确实收到了数据,但随后错误消息出现在控制台中。有什么方法可以避免此消息吗?

感谢您上面的所有回答,但我想我已经找到了方法,在解决此问题之前,我尝试使用两种方式,在 MVC 中设置访问控制允许原产地 ASP.Net - 最简单的方法有了87票和32票,我在两个不同的地方找到了答案,并且都应用了它们,但没有奏效。本周早些时候,我尝试删除 web.config 中的代码,只是将代码保留在 C# 中,它可以工作!不敢相信这两种解决方案有冲突。

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

"

不允许由访问控制-允许-来源"是原因。简而言之,您通常不能对与包含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

如果情况是

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

  • 或子域

  • 或尝试使用其他端口访问网址

这是跨域请求。 jQuery无法满足跨域请求。

如果这是你的问题,那么你应该使用JSONP来做这个"JSONP"允许跨域请求。

尝试使用 JSONP 来执行此操作。

对于 JSONP,每个调用都有一个回调,这意味着 URL 中会有一个值并且您必须在PHP中发送带有此调用的响应

意思是试试这个:-

$.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 中得到响应。