Вот что вам нужно сделать: JSONP.
Из-за указанной политики вы не можете сделать AJAX-запрос к Yahoo, но есть обходные пути.А именно, тег сценария, который может сделать запрос в любое место.
Например, скажем, вы хотите сделать запрос Yahoo, когда пользователь нажимает кнопку «GO».Вам нужно добавить обработчик событий, чтобы перехватить событие нажатия пользователя, а затем добавить новый тег сценария в раздел заголовка DOM.URL тега script важен, в нем должен быть параметр обратного вызова, например:
http://helloasdf.cloudfoundry.com/get.tokens?callback=xss
Примечание. Обратным вызовом может быть любое произвольное имя функции.Ответ будет:
xss(["asdf"])
, что означает, что функция xss в вашем коде будет передана ["asdf"].
Или с API yahoo;
http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=GS&callback=YAHOO.Finance.SymbolSuggest.ssCallback
обратите внимание на callback = YAHOO.Finance.SymbolSuggest.ssCallback, который вызовет эту функцию при возврате запроса:
YAHOO.Finance.SymbolSuggest.ssCallback({"ResultSet":{"Query":"gs","Result":[{"symbol":"GS","name": "The Goldman Sachs Group, Inc.","exch": "NYQ","type": "S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"^GSPC","name": "S&P 500 INDEX,RTH","exch": "SNP","type": "I","typeDisp":"Index"},{"symbol":"GSS","name": "Golden Star Resources, Ltd.","exch": "ASE","type": "S","exchDisp":"AMEX","typeDisp":"Equity"},{"symbol":"^GSPTSE","name": "S&P/TSX Composite index (Interi","exch": "TOR","type": "I","exchDisp":"Toronto","typeDisp":"Index"},{"symbol":"GSK","name": "GlaxoSmithKline plc","exch": "NYQ","type": "S","exchDisp":"NYSE","typeDisp":"Equity"},{"symbol":"GSX","name": "Gasco Energy Inc.","exch": "ASE","type": "S","exchDisp":"AMEX","typeDisp":"Equity"},{"symbol":"OIL","name": "iPath S&P GSCI Crude Oil TR Index ETN","exch": "PCX","type": "E","typeDisp":"ETF"},{"symbol":"GSIC","name": "GSI Commerce Inc.","exch": "NMS","type": "S","exchDisp":"NASDAQ","typeDisp":"Equity"},{"symbol":"GST","name": "Gastar Exploration, Ltd.","exch": "ASE","type": "S","exchDisp":"AMEX","typeDisp":"Equity"},{"symbol":"GSI","name": "General Steel Holdings, Inc.","exch": "NYQ","type": "S","exchDisp":"NYSE","typeDisp":"Equity"}]}})
Вот пример js, который вам нужно динамически добавитьтег script:
var headLoc = document.getElementsByTagName("head").item(0);
var scriptObj = document.createElement("script");
var token="localstring"
var url="http://helloasdf.cloudfoundry.com/get.tokens?callback=xssCallback";
// Add script object attributes
scriptObj.setAttribute("type", "text/javascript");
scriptObj.setAttribute("charset", "utf-8");
scriptObj.setAttribute("src", url);
scriptObj.setAttribute("id", 'asf12');
headLoc.appendChild(scriptObj);
Я задокументировал этот процесс подробнее здесь: http://eggie5.com/22-circumvent-same-origin-policy