Chrome 显示“访问控制允许来源”错误
Chrome shows Access Control Allow Origin error
我正在使用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 中得到响应。
- jquery表单验证复选框错误显示
- 为什么Inspect元素中的错误显示函数myNUM()没有定义?如何定义函数
- 禁用文本框的脚本错误显示
- 为什么错误显示为函数体之前缺少{
- Firefox SDK:包括jquery.flot在内的问题,错误显示维度高度为空
- 版边上出现错误“显示临时标题”
- 自定义错误显示在自定义位置,而不是每个元素旁边
- JavaScript错误显示在浏览器中
- jQuery tonum 是刨丝器,然后如果错误显示错误,则从没有
- 根据发现的错误显示不同的引导程序警报消息
- Javascript代码错误显示未定义的值
- 将输入字段值传入angularjs $resource undefined,错误显示未知的作用域提供商
- JavaScript错误显示在Joomla1.5页面
- 使用ruby生成节点并使用javascript错误显示它们
- d3js:条形图是不可见的,没有错误显示
- 与一些javascript,密码/用户名错误显示
- JavaScript错误显示表
- Javascript(与相位器)错误显示游戏的颜色-括号
- Jquery表单验证错误显示Div
- Php错误显示,而访问输入类型=文件使用jquery/ajax方法