AJAX跨域请求
我的主域上有我的JavaScript文件,我想从子域进行一些调用。
我已经添加了:
url: "http://domain.com/ajax.php"
所以完整的代码是:
$.ajax({ type: "POST", url: "http://domain.com/ajax.php", data: { var1: var1, var2: var2 }, success: function(data){ } });
但是在Firebug上,它将请求显示为红色并且无法响应。 POST参数也应该如此。
我应该在子域上创建一个新的JS文件并添加必要的代码并从那里进行AJAX调用吗?
编辑:使用JSONP代码
我在localhost/ajax.php
上使用它,我从sub.localhost
调用sub.localhost
$.ajax({ dataType: 'jsonp', data: 'id=10', jsonp: 'jsonp_callback', url: 'http://localhost/ajax.php', success: function (data) { console.log(data); }, });
并且ajax.php包含:
您可以使用Access-Control-Allow-Origin
标头启用跨域请求。
阅读: 跨源资源共享(CORS)
假设你有jQuery 1.5+,你可以使用:
$.ajax({ crossDomain:true, type: "POST", url: "http://domain.com/ajax.php", data: { var1: var1, var2: var2 }, success: function(data){ } });
来自DOCS:
crossDomain(已添加1.5)
Default: false for same-domain requests, true for cross-domain requests
如果要在同一域上强制执行跨域请求(例如JSONP),请将crossDomain的值设置为true。 例如,这允许服务器端重定向到另一个域
对于子域名调用,您有两个选择:
-
双方都使用document.domain 。
-
使用jsonP,通过jQuery 1.5的crossDomain ajax规范,或直接使用 。