2012-03-01 7 views
0

私はAjaxコードがリモートスクリプト(http://leke.dyndns.org)としてではなく、他のドメインで同じドメイン内の仕組み来る...サーバー側のコードが別のドメインでホストされている場合、ajaxが実行されますか?

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(); 

(Firefoxのスクラッチパッドをオープンし、入力されました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 
+0

http://stackoverflow.com/questions/466737/why-is-cross-domain-ajax-a-security-concern –

答えて

2

はありません、それはしません。これは仕様によるものです(same origin policy)、cross site scriptingの攻撃を防ぐことです。

本当に必要な場合は、JSONPを使用して回避することができますが、他のサイト(サイト管理者を信頼しても攻撃者がハッキングする可能性があります)を許可して、ユーザーのデータに

1

通常の方法では実行できません。あなたは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のurlのレスポンスヘッダーにドメイン名が「*」のAccess-Control-Allow-Originフィールドがある場合は、

関連する問題