当我尝试从php (localhost)
到django (localhost:8000)
进行AJAX调用时,它会抛出以下错误。
XMLHttpRequest无法加载http://localhost:8000/project/login/uid=bimt;token=KAMWMS151UWP67Q。起源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);
}
});
});
因为端口不相同,所以它被视为跨源请求。您必须在请求的脚本中设置Access-Control-Allow-Origin
标头。
了解更多:
http://enable-cors.org/server.html
或者,特别是django:
http://chase-seibert.github.io/blog/2012/01/27/using-access-control-allow-origin-to-make-cross-domain-post-requests-from-javsacript.html
1)php不发出ajax请求。php在服务器端执行;javascript在客户端执行,js向服务器发出ajax请求。
2) js不允许向与获取当前页面的主机不同的主机发出ajax请求。
你应该参考这个链接。
试试,类似于:
$('#yourClickButtonId').click(function(){
$.ajax({
type: 'POST',
url: 'project/login?uid='+$('#usename')+'&token='+$('#token'),
success: function(data){
alert(data);
}
});
});
您应该只使用相对路径。
我在localhost的位置交换了我的内部IP(192.168.1.x),并能够在上面调用XMLHttpRequest。这应该可以在不干扰跨源策略的情况下完成任务。