![](/img/trans.png)
[英]Cross domain ajax request from javascript file without help of server side code
[英]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
以正常方式無法完成。 但是, 如果服務器端代碼托管在其他域中 ,則可以運行
為此,您必須在以下服務器站點上進行更改:
在服務器站點中,您必須將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調用。 如果且僅是http://xyz.com?x=a
的響應標頭包含帶有您的域名或“ *”的Access-Control-Allow-Origin
字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.