ドメインをまたぐajaxについて
- ドメインをまたぐajaxでエラーが発生する理由について
- ローカル上では問題ないが、ドメインをまたぐ場合にエラーが発生する
- ajaxでドメインをまたぐことはセキュリティ上制限されているのか
- ベストアンサー
ドメインをまたぐajax
サーバA(A.com)に <script type="text/javascript" src="http://B.com/"></script> サーバB(B.com)のajax上に object oj = new ActiveXObject("Msxml2.XMLHTTP") ; oj.open(method,url,async,user,password); でajaxを利用しようとしたところ、 上記のoj.openでエラーとなってしまいます。 ローカル上に両方置いてテストしたときはエラーは起きないのですが、 ドメインをまたぐ場合はエラーとなります。 ajaxでドメインをまたぐのはセキュリティ上使用できないのでしょうか?
- ENTRE
- お礼率0% (16/2523)
- AJAX
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
通常はドメインをまたぐ、XMLHttpRequestはできないようになっています。 しかし、回避策もあるようです。 http://d.hatena.ne.jp/nyagao/20070529/1180452264
関連するQ&A
- AJAXでサイト存在チェック時、スクリプトエラー
AJAXを使用し、遷移したいサイトが存在する場合、その際サイトに遷移し、存在しない場合は、ほかのサイトに遷移するという処理を行いたいのですが、スクリプトエラーが発生しまい困っています。 遷移先をローカルサーバのリンクを指定するとうまくいくのですが、外部サーバのアドレスを指定するとエラーになってしまいます・・。何か制約があるのでしょうか? また、ほかの方法で実現できるのであれば、教えてください。 現在記述しているソースの一部を下記に添付します。 <script language="JavaScript" type="text/JavaScript"> <!-- function fucXMLHttpRequest(){ /* XMLHttpRequestオブジェクト作成 */ var xmlhttp = createXmlHttp(); xmlhttp.onreadystatechange = handleHttpEvent; function handleHttpEvent(){ if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { window.open("http://www.inte.co.jp/xxxx/xxxx"); } else { window.open("http://www.inte.co.jp/"); } } } xmlhttp.open("GET", "http://www.inte.co.jp/xxxx/xxxx" , true); xmlhttp.send(null); return false; } function createXmlHttp(){ if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } else { return null; } } //--> </script> </head> <a href="#" onClick="fucXMLHttpRequest()">詳しくはこちら</a>
- ベストアンサー
- JavaScript
- Ajax は NN でも使えますか?
初歩的な質問ですみません。 Ajax の非同期通信で、XMLHTTP オブジェクトを作成するスクリプトを見ると、 function createXMLHttpRequest() { var XMLhttpObject = null; try{ XMLhttpObject = new XMLHttpRequest(); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ return null; } } } return XMLhttpObject; } のように Microsoft のオブジェクトを読み込んでいるように見えるのですが、NN でもつかえるのでしょうか。 また、Macintosh との互換性はどうなのでしょうか。 ご存知の方はお教えください。
- ベストアンサー
- JavaScript
- Ajaxでデータベース(PostgreSQL)
を非同期で読み込むことができるでしょうか? ファイルならば下記のようにすれば良いみたいですが データベースの場合のやり方がわかりません。 PostgreSQLのデータを読み込むにはどうしたら良いのでしょうか? <script> var xmlHttp; function loadText() { if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); } else { if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = null; } } xmlHttp.onreadystatechange=checkStatus; xmlHttp.open("GET","plan.txt",true); xmlHttp.send(null); } function checkStatus() { if(xmlHttp.readyState==4 && xmlHttp.status==200) { alert(xmlHttp.responseText); } } </script> <form> <input type="button" value="read file" onClick="loadText()"> </form>
- ベストアンサー
- JavaScript
- Ajaxで表示させると内容が不変
下記Ajaxでtest.txtを表示できたのですが test.txtの内容を Hello Japan. 変えてもブラウザのキャッシュをクリアしない限り Hello World! が出つづけます。 下記ページにキャッシュ無効のヘッダをつけても同じです。 子の問題を解決する手段を教えてください。 test.txt: Hello World! x.html: <script> var xmlHttp; function loadText() { if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET","test.txt",true); xmlHttp.send(null); } function checkStatus() { if (xmlHttp.readyState==4&&xmlHttp.status==200) { var node = document.getElementById("disp"); node.innerHTML = xmlHttp.responseText; } } </script> <form> <input type="button" value="push" onClick="loadText()"> </form> <div id="disp"></div>
- ベストアンサー
- JavaScript
- Ajax+Servletで文字化け
Ajax+Servletで"I"、"II"等が文字化けしてしまいます。 以下のようにajaxを使いserver側のservletへアクセスしています。 xmlhttp = this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Msxml2.XMLHTTP"); //コールバック関数の登録 xmlhttp.onreadystatechange = display; xmlhttp.open('POST','Test',true); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(null); フトントの画面はJSPで <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> で定義しています。 サーブレットはpostgresのDBから項目を取得し、htmlを返却しています。 返却したhtmlをDOMのinnterHTMLを使い、画面を書き換えています。 response.setContentType("text/html; charset=Windows-31J"); servletからhtmlを返却する際、上記のようにWindows-31Jで返却すると、javascriptで"xmlhttp.responseText"の所で "ランタイムエラーが発生しました。デバックしますか 行107 c00ce56eの為、操作を完了できませんでした。" とエラーが出てしまいます。 response.setContentType("text/html; charset=shift-jis"); 出力する際、上記のようにShift-jisで返却すると、エラーは発生しないのですが、"I"、"II"等が文字化けしてしまいます。 何か解決策ありますでしょうか。 宜しくお願いします。
- ベストアンサー
- AJAX
- ajax でのデータ受け渡しに関して
ajax でのデータ受け渡しに関して わかりにくい内容で申し訳ありません。 現在、PHPで作成されているプログラムの中に、ajaxを組み込みたいと考えています。 処理の動きとしては、あるプルダウンが選択された場合、すぐさまその値をもとにしてDBへ 検索しに行くというものです。 通常、PHPだけの処理の場合、POST等を用いて、ボタンが押されたら違うphpファイルへ値を 送る事が可能かと思われます。 その処理をajax で選択されたらすぐに検索、表示というような動きをしたいと考えて います。 但し、同じソース、画面上の中でなら、以下のような記述で表示させる事は可能かと 思われますが、HTMLで分割した画面で、上段で選択されたプルダウンの値をもとにして、検索 された結果を下段に表示させたいと考えています。 そもそも、ajaxでは同じ画面上での受け渡ししかできず、上記のように分割されたものでは 不可能なのでしょうか。。。 初歩的な内容で申し訳ありませんが、教えて頂きたいと思います。 《記述内容》 ※ 現状では以下のようなサンプル記述をもとに、自画面(同一)上では表示が可能となっています。 <script> function createXMLHttpRequest(){ if( window.XMLHttpRequest ){ return new XMLHttpRequest(); }else if( window.ActiveXObject ){ try{ return new ActiveXObject( "Msxml2.XMLHTTP" ); }catch(e){ return new ActiveXObject( "Microsoft.XMLHTTP" ); } } return null; } function getDataPost( serverURL, objID ,obj){ var ajax = createXMLHttpRequest(); ajax.open( "POST", serverURL ); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange=function(){ if(( ajax.readyState == 4 ) && ( ajax.status == 200 )){ if(objID!=""){ var obj = document.getElementById( objID ); obj.innerHTML = ajax.responseText; } } } ajax.send( obj.name+"="+obj.value ); } </script> <select name="fuga" onchange="getDataPost('hogehoge.php','hoge',this)"> <option value="">---</option> <option value="1">1</option> <option value="2">2</option> </select> <div id="hoge"></div> よろしくお願いします。
- ベストアンサー
- AJAX
- AjaxでSJISファイル読み込みすると文字化け
Ajaxを利用し、SJISで作成されたCSVファイルを読み込みたいのですが文字化けしてしまい困っています。 最終的には、Windowsのサイドバーガジェットで、東京電力が公開しているSJISのCSVファイルの中身を表示したいのです。(それ以前にAjax単体で文字化けしてしまいます) 本来、CSVをUTF-8にしたり、サーバサイド(PHPなど)側で文字コード変換したりするのでしょうが、それができないため、JavaScript側で何とかしたいのですが、ご教授願います。 以下、サンプルソースです。 何故か、東京電力のCSVはダメで、東北電力のCSVは大丈夫です。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <html> <head> <script language="JavaScript"> function getCsv(uri){ var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlHttp.open("GET",uri); xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState==4 && xmlHttp.status==200){ document.getElementById("disp").innerHTML = xmlHttp.responseText; } } xmlHttp.send(null); } </script> </head> <body> <form> <select onchange="getCsv(this[this.selectedIndex].value);"> <option>↓選択してください <option value="http://www.tepco.co.jp/forecast/html/images/juyo-j.csv">東京電力 <option value="http://setsuden.tohoku-epco.co.jp/common/demand/juyo_tohoku.csv">東北電力 </select> </form> <div id="disp"></div> </body> </html>
- ベストアンサー
- AJAX
- ActiveXObject("Msxml2.XMLHTTP") のスクリプトエラー
JavaScriptのプログラムの以下の記述の2行目(xmlhttp.open で始まる行)でスクリプトエラー「書き込み出来ません 」が発生します。 原因、対処法をご助言、ご指導ください。 var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp.open("GET", "http://10.2.*.*/time.asp", false); xmlhttp.send(); localSevTime = xmlhttp.responseText; ただし、このエラーが発生するのは特定の Windows 2000 Professional のPCのみです。他のWin2000 や Windows XP Pro.のPCでは発生しません。Win2000 には、IE5.5 が搭載されています。(エラーが発生するものも、発生しないものも) なお、GET の後ろに記述の time.asp は、サーバ(10.2.*.*)の時刻を返すものです。スクリプトエラーが発生するPCで WebブラウザのURLに "http://10.2.*.*/time.asp" を打ち込むと、ちゃんと時刻を表示します。 以上、宜しくお願い致します。
- ベストアンサー
- JavaScript
- AJAXを使って、htmlページにスクリプト
AJAXを使って、htmlページにスクリプトを記述して、 再読み込みすることなく表示することはできたのですが、 同じドメイン内に限られてしまいます。 違うドメインにスクリプトを記述した場合には、 エラーとなってしまいます。 AJAXはドメイン超えはできないのでしょうか? よろしくお願いします。
- ベストアンサー
- JavaScript
- DOMの種類を一覧できるサイト
今はやりのAjax用関数で以下のようなものがあります。 function createXMLHttpRequest(){ var XMLhttpObject = null; try{ XMLhttpObject = new XMLHttpRequest(); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ return null; } } } return XMLhttpObject; } IEやそれ以外のブラウザで利用可能なActiveXObject(DOM)を選択できるようになっていますが、ここで使われているMsxml2.XMLHTTPやMicrosoft.XMLHTTPのようなDOMがたくさんリストアップされているサイトを探しています。最初にこの関数を作った人はどうやってこれらのDOMを見つけたのか気になりますし、自分で似たような関数を作ってみたいので。どうか情報提供をお願いいたします。
- 締切済み
- JavaScript