在stackoverflow中搜索之后,我无法看到解决方案。 我有这个jquery代码:
<script>
$('input#submit').click( function() {
$.ajax({
url: 'http://localhost:8081/rpc/api',
type: 'post',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({"jsonrpc": 2.0, "method": "entidades","params": {"file": "entidades.json"}}),
success: function(data) {
alert(data);
},
error:function(e){
console.log(e);
}
});
});
我正在尝试将数据参数中的json发送到带有服务器的文件,该服务器处理json并返回一些内容。
问题是当我从chrome或其他浏览器执行此操作时,我会在控制台中收到:
OPTIONS http://localhost:8081/rpc/api 405 (Method Not Allowed)
XMLHttpRequest cannot load http://localhost:8081/rpc/api. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
我认为问题是因为我在本地执行jquery。 如果这是问题,怎么办?
答案 0 :(得分:3)
这看起来像是跨域请求,默认情况下大多数浏览器都不允许这样做。即使只是不同的端口号也会使其成为跨域请求。 您可以将CORS视为可能的解决方案。
http://www.html5rocks.com/en/tutorials/cors/
另一种解决方案是制作反向代理
答案 1 :(得分:0)
Access-Control-Allow-Origin表示您无法执行跨域调用。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
解决此问题的唯一方法是在服务器中允许CORS。 我认为还有另一种解决方法,使用JSONP而不是使用$ .ajax(),但我从未使用它