{"id":165,"date":"2007-04-19T22:51:00","date_gmt":"2007-04-19T14:51:00","guid":{"rendered":"http:\/\/behindgfw.com\/archives\/2007\/04\/google-ajax-feed-api-%e4%b8%8e-cross-site-ajax.html"},"modified":"2016-05-03T20:49:14","modified_gmt":"2016-05-03T12:49:14","slug":"google-ajax-feed-api-cross-site-ajax","status":"publish","type":"post","link":"https:\/\/www.behindgfw.com\/archives\/2007\/04\/google-ajax-feed-api-cross-site-ajax.html","title":{"rendered":"Google AJAX Feed API \u4e0e Cross Site AJAX"},"content":{"rendered":"<p>Google\u521a\u521a<a href=\"http:\/\/googleajaxsearchapi.blogspot.com\/2007\/04\/announcing-google-ajax-feed-api.html\">\u53d1\u5e03<\/a>\u4e86Google AJAX Feed API \uff0c\u6587\u6863\u548c\u8303\u4f8b\u5728<a href=\"http:\/\/code.google.com\/apis\/ajaxfeeds\/documentation\/\">\u8fd9\u91cc<\/a>\u3002<\/p>\n<p>\u3010\u80cc\u666f\u3011\u6d41\u884c\u7684AJAX\u7a0b\u5e8f\u90fd\u5927\u91cf\u4f7f\u7528\u4e86JavaScript\u548cXMLHttpRequest\uff0c\u800cXMLHttpRequest\u9075\u5faa<a href=\"http:\/\/en.wikipedia.org\/wiki\/Same_origin_policy\">\u540c\u6e90\u7b56\u7565<\/a>\uff0c\u5373\u901a\u5e38\u6240\u8bf4\u7684\u8de8\u57df\u95ee\u9898\u3002\u4ec0\u4e48\u662f\u540c\u6e90\u7b56\u7565\uff1a\u4e00\u822c\u60c5\u5f62\u4e0b\uff0c\u4e3a\u5b89\u5168\u8d77\u89c1\uff0c\u6d4f\u89c8\u5668\u4e0d\u5141\u8bb8\u4f60\u5728\u5ba2\u6237\u7aef\u901a\u8fc7XMLHttpRequest\u8bbf\u95ee\u522b\u7684\u57df\uff0c\u9ed8\u8ba4\u4f60\u53ea\u80fd\u5b58\u53d6\u540c\u57df\u540d\u3001\u540c\u4e00\u7aef\u53e3\u3001\u540c\u4e00\u534f\u8bae\u4e0b\u7684\u8d44\u6e90\u3002\u8fd9\u7ed9\u6211\u4eec\u9020\u6210\u4e86\u9ebb\u70e6\uff0c\u5f88\u660e\u663e\uff0c\u5728\u4e0d\u5c11\u60c5\u5f62\u4e0b\uff0c\u83b7\u53d6\u522b\u7684\u7f51\u7ad9\u7684\u4fe1\u606f\/\u670d\u52a1\u662f\u975e\u5e38\u6709\u7528\u7684\u3002<\/p>\n<p>\u3010\u89e3\u51b3\u65b9\u6848\u3011\u901a\u5e38<a href=\"http:\/\/blog.joycode.com\/saucer\/archive\/2006\/10\/03\/84572.aspx\">\u89e3\u51b3\u65b9\u6cd5<\/a>\u6709\u4e09\u79cd\uff1a<\/p>\n<ol>\n<li>\u5728\u540c\u4e00\u57df\u7684\u670d\u52a1\u5668\u7aef\u5efa\u7acb\u4e00\u4e2a\u4ee3\u7406\uff0c\u6d4f\u89c8\u5668\u5411\u8be5\u4ee3\u7406\u7f51\u5740\u53d1\u9001\u8bf7\u6c42<wbr><\/wbr>\uff0c\u7136\u540e\u8be5\u4ee3\u7406\u5411\u5176\u4ed6\u57df\u7684\u7f51\u5740\u53d1\u8bf7\u6c42\uff0c\u5728\u83b7\u53d6\u56de\u590d\u540e<wbr><\/wbr>\uff0c\u6216\u4f5c\u5904\u7406\u6216\u6309\u539f\u6837\u53d1\u56de\u5230\u6d4f\u89c8\u5668\u3002<\/li>\n<li>\u4f7f\u7528\u6309\u9700(On-Demand) Javascript \u811a\u672c\u3002\u5728\u9875\u9762\u5185\u52a8\u6001\u751f\u6210\u65b0\u7684<script><\/script>\uff0c\u5c06\u5176src\u5c5e\u6027\u6307\u5411<wbr><\/wbr>\u522b\u7684\u7f51\u7ad9\u7684\u7f51\u5740\uff0c\u8fd9\u4e2a\u7f51\u5740\u8fd4\u56de\u7684\u5185\u5bb9\u5fc5\u987b\u662f\u5408\u6cd5\u7684Javascri<wbr><\/wbr>pt\u811a\u672c\uff0c\u5e38\u7528\u7684\u662fJSON\u6d88\u606f\u3002<\/li>\n<li>\u4f7f\u7528IFRAME\u3002\u5728\u9875\u9762\u5185\u5d4c\u6216\u52a8\u6001\u751f\u6210\u6307\u5411\u522b\u7684\u7f51\u7ad9\u7684IFRAM<wbr><\/wbr>E\uff0c\u7136\u540e\u8fd92\u4e2a\u7f51\u9875\u95f4\u53ef\u4ee5\u901a\u8fc7\u6539\u53d8\u5bf9\u65b9\u7684anchor hash fragment\u6765\u4f20\u8f93\u6d88\u606f\u3002<\/li>\n<\/ol>\n<p>\u90fd\u662f\u6bd4\u8f83\u9ebb\u70e6\u7684\u3002<br \/>\n\u540e\u6765\uff0cyahoo\u63d0\u4f9b\u4e86<a href=\"http:\/\/pipes.yahoo.com\/\">Yahoo Pipes<\/a>\uff0c\u4e00\u4e2a\u53ef\u89c6\u5316\u754c\u9762\u7684feed\u805a\u5408\u670d\u52a1\u7a0b\u5e8f\uff0c\u4e1a\u754c\u8bc4\u4ef7\u633a\u9ad8\uff0c\u5f53\u7136\u8fd8\u6709<a href=\"http:\/\/www.techcrunch.com\/2007\/03\/02\/5-ways-to-mix-rip-and-mash-your-data\/\">\u5176\u4ed6\u51e0\u4e2a<\/a>mashups\u7a0b\u5e8f\u53ef\u4f9b\u9009\u62e9\u3002\u4f46\u662fGoogle AJAX Feed API\u53ef\u80fd\u662f\u6700\u9002\u5408developer\u4f7f\u7528\u7684\u4e86\u3002<\/p>\n<p>\u3010Google AJAX Feed API\u3011 \u73b0\u5728\u4f60\u53ea\u8981\u4e66\u5199\u51e0\u884cJavaScript\u7a0b\u5e8f\uff0c\u4e0d\u518d\u9700\u8981\u5efa\u7acb\u590d\u6742\u7684\u670d\u52a1\u5668\u7aef\u4ee3\u7406\uff0cGoogle\u4ee3\u52b3\u4e86\u6240\u6709mashups\u5f00\u53d1\u3002<\/p>\n<p>\u3010\u5ef6\u4f38\u9605\u8bfb\u3011\u5173\u4e8e Cross Site AJAX\uff1a<\/p>\n<p>1. Security Considerations: Dynamic HTML<br \/>\n<a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/workshop\/author\/dhtml\/sec_dhtml.asp\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/msdn.microsoft.com<wbr><\/wbr>\/library\/default.asp?url=<wbr><\/wbr>\/workshop\/author\/dhtml\/sec<wbr><\/wbr>_dhtml.asp <\/a><\/p>\n<p>2. About Cross-Frame Scripting and Security<br \/>\n<a href=\"http:\/\/msdn.microsoft.com\/library\/default.asp?url=\/workshop\/author\/om\/xframe_scripting_security.asp\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">    http:\/\/msdn.microsoft.com<wbr><\/wbr>\/library\/default.asp?url=<wbr><\/wbr>\/workshop\/author\/om\/xframe<wbr><\/wbr>_scripting_security.asp <\/a><\/p>\n<p>3. Cross-Domain Proxy<br \/>\n<a href=\"http:\/\/ajaxpatterns.org\/Cross-Domain_Proxy\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/ajaxpatterns.org\/Cross<wbr><\/wbr>-Domain_Proxy<\/a><\/p>\n<p>4. Cross Domain XMLHttpRequest using an IFrame Proxy<br \/>\n<a href=\"http:\/\/manual.dojotoolkit.org\/WikiHome\/DojoDotBook\/Book75\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/manual.dojotoolkit.org<wbr><\/wbr>\/WikiHome\/DojoDotBook\/Book75 <\/a><\/p>\n<p>5. Back Button Support for Atlas UpdatePanels<br \/>\n<a href=\"http:\/\/www.nikhilk.net\/BackButtonSupport.aspx\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/www.nikhilk.net\/BackButt<wbr><\/wbr>onSupport.aspx <\/a><\/p>\n<p>6. Cross-document messaging hack<br \/>\n<a href=\"http:\/\/blog.monstuff.com\/archives\/000304.html\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/blog.monstuff.com<wbr><\/wbr>\/archives\/000304.html<\/a><\/p>\n<p>7. Calling web services hosted outside of your application with &#8220;Atlas&#8221;<br \/>\n<a href=\"http:\/\/blogs.msdn.com\/federaldev\/archive\/2006\/07\/31\/684229.aspx\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">http:\/\/blogs.msdn.com\/federalde<wbr><\/wbr>v\/archive\/2006\/07\/31\/684229<wbr><\/wbr>.aspx<\/a><\/p>\n<p><a href=\"http:\/\/www.federaldeveloper.com\/Shared%20Documents\/Presentations%20by%20Marc%20Schweigert\/CallAtlasWebServiceInDifferentProject.zip\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">    http:\/\/www.federaldeveloper<wbr><\/wbr>.com\/Shared%20Documents<wbr><\/wbr>\/Presentations%20by%20Marc<wbr><\/wbr>%20Schweigert\/CallAtlasWebServi<wbr><\/wbr>ceInDifferentProject.zip <\/a><\/p>\n<p>8. AJAX Tip: Passing Messages Between iframes<br \/>\n<a href=\"http:\/\/www.25hoursaday.com\/weblog\/PermaLink.aspx?guid=3b03cf9d-b589-4838-806e-64efcc0a1a15\" onclick=\"return top.js.OpenExtLink(window,event,this)\" target=\"_blank\">    http:\/\/www.25hoursaday.com<wbr><\/wbr>\/weblog\/PermaLink.aspx?guid<wbr><\/wbr>=3b03cf9d-b589-4838-806e<wbr><\/wbr>-64efcc0a1a15<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google\u521a\u521a\u53d1\u5e03\u4e86Google AJAX Feed API \uff0c\u6587\u6863\u548c\u8303\u4f8b\u5728\u8fd9\u91cc\u3002 \u3010\u80cc\u666f\u3011\u6d41\u884c\u7684AJAX\u7a0b [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[53,69,21],"class_list":["post-165","post","type-post","status-publish","format-standard","hentry","category-google","category-webdev","tag-ajax","tag-google","tag-javascript"],"_links":{"self":[{"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/posts\/165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/comments?post=165"}],"version-history":[{"count":1,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/posts\/165\/revisions"}],"predecessor-version":[{"id":497,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/posts\/165\/revisions\/497"}],"wp:attachment":[{"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/media?parent=165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/categories?post=165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.behindgfw.com\/archives\/wp-json\/wp\/v2\/tags?post=165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}