当我尝试从php (localhost)
到django (localhost:8000)
进行AJAX调用时,会抛出以下错误。
XMLHttpRequest无法加载 http://localhost:8000/project/login/uid=bimt;token=KAMWMS151UWP67Q。 Access-Control-Allow-Origin不允许原点http://localhost。
$(document).on('click', '.login', function(event) {
var username = $('#username').val();
var token = $('#token').val();
$.ajax({
type: "POST",
url: "http://localhost:8000/project/login/uid=" + username + ";token=" + token,
success: function (html) {
alert(html);
}
});
});
答案 0 :(得分:8)
由于端口不相同,因此它被视为跨源请求。
您必须在要请求的脚本中设置Access-Control-Allow-Origin
标头。
了解详情:
http://enable-cors.org/server.html
或者,特别是对于django:
答案 1 :(得分:1)
1)php不会发出ajax请求。 php在服务器端执行; javascript在客户端执行,而js向服务器发出ajax请求。
2)js不允许你向与获取当前页面的主机不同的主机发出ajax请求。
答案 2 :(得分:0)
默认情况下,AJAX无法发出跨域请求。
您应该参考此link。
答案 3 :(得分:0)
尝试,例如:
$('#yourClickButtonId').click(function(){
$.ajax({
type: 'POST',
url: 'project/login?uid='+$('#usename')+'&token='+$('#token'),
success: function(data){
alert(data);
}
});
});
您应该使用相对路径。
答案 4 :(得分:0)
我交换了我的内部IP(192.168.1.x)代替localhost,并且可以在其上调用XMLHttpRequest。这应该可以解决问题而不会搞乱交叉原始政策。