如果服务器端代码托管在不同的域上,ajax会运行吗
Will ajax run if server side code is hosted on a different domain?
我打开Firefox的草稿栏,输入。。。
function ajaxRequest()
{
var xmlhttp;
var domainName = location.host;
var url = 'http://leke.dyndns.org/cgi/dn2ipa/resolve-dns.py?domainName=';
url = url + domainName + '&x=' + Math.random(); // x= to avoid browser caching;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(domainName+'='+xmlhttp.responseText);
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
ajaxRequest();
为什么我的ajax代码与远程脚本在同一个域中工作(http://leke.dyndns.org),但不在其他域中(如http://stackoverflow.com)?
如果有帮助的话,这里是cgi方面。。。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, cgi, cgitb, socket
cgitb.enable()
cgiData = cgi.FieldStorage() # Domain Name
domainName = cgiData.getvalue('domainName')
ipa = socket.gethostbyaddr(domainName)
sendIpa = ipa[2][0]
print 'Content-Type: text/html;charset=utf-8'
print ""
print sendIpa
不,不会。这是经过设计的(同源策略),旨在防止跨站点脚本攻击。
如果你真的必须这样做,你可以使用JSONP绕过它,但不建议这样做,因为你可能会允许另一个网站(即使你信任网站管理员,也可能被攻击者入侵)对登录用户的数据为所欲为。
在正常情况下无法完成。但是,如果服务器端代码托管在不同的域上,则可以运行
要实现这一点,您必须进行以下服务器站点更改:
在服务器站点中,您必须将Access-Control-Allow-Origin
设置为Response Header
Access-Control-Allow-Origin : * //all other domain can access
or
Access-Control-Allow-Origin : <your_domain_name> // only your domain can access
检查:https://developer.mozilla.org/en/http_access_control
【示例】
您可以从不同的域成功地对http://xyz.com?x=a
url进行ajax调用。If and ony If http://xyz.com?x=a
url的响应标头中有一个Access-Control-Allow-Origin
字段,其中包含您的域名或'*'。
相关文章:
- Javascript-如何让脚本与Ajax请求的数据一起运行
- PHP脚本在Lion上通过Ajax运行时会回显自己的内容
- 使用ajax运行php脚本不会显示任何结果
- 通过ajax运行php页面时,请检查javascript中单击了哪个按钮
- 使用 AJAX 运行实时时钟
- 使用Javascript/Ajax运行php脚本
- php脚本通过ajax运行时显示进度条
- 如何使用ajax运行php文件
- Jquery+Ajax:运行一个不刷新页面的插件
- 希望JS函数使用ajax运行PHP,然后在页面上输出PHP
- 使用ajax运行python脚本
- 如何在ajax运行时禁用click功能,相同的click启动ajax运行,在ajax完成后,重新启用click功能
- 使用ajax运行php文件并在页面上输出php
- 如何设置ajax运行每5秒
- ajax运行时显示进度条或旋转器
- 通过链接通过Ajax运行PHP脚本
- 如何使用Ajax运行外部PHP文件并在同一页面中显示结果
- AJAX 运行正常,但不显示提取的数据
- 脚本在foreach内部不起作用,如何通过ajax运行它
- Ajax运行函数在我的类原型