-3
我遇到了使用jQuery檢索位於外部域的RSS提要的問題。它在Safari中工作,但由於同源策略限制(也記錄有關$ .ajax()函數),其他瀏覽器會出錯。同源策略,Javascript/jQuery AJAX和檢索RSS XML feed
想知道我是如何修復它的嗎?
我遇到了使用jQuery檢索位於外部域的RSS提要的問題。它在Safari中工作,但由於同源策略限制(也記錄有關$ .ajax()函數),其他瀏覽器會出錯。同源策略,Javascript/jQuery AJAX和檢索RSS XML feed
想知道我是如何修復它的嗎?
我做了一個簡單的PHP腳本像這樣:
<?php
/*
fetch.php fixes this issue: http://en.wikipedia.org/wiki/Same_origin_policy
Read more:
* http://api.jquery.com/jQuery.ajax/
* http://stackoverflow.com/questions/3595515/xmlhttprequest-error-origin-null-is-not-allowed-by-access-control-allow-origin
* http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains
*/
// Requires URL
if (!isset($_REQUEST['url']) || empty($_REQUEST['url'])) exit('No url specified');
// Set content-type
$type = 'application/rss+xml; charset=utf-8;';
if (isset($_REQUEST['type']) && !empty($_REQUEST['type'])) {
$type = urldecode($_REQUEST['type']);
}
// Adapted from http://www.howtogeek.com/howto/programming/php-get-the-contents-of-a-web-page-rss-feed-or-xml-file-into-a-string-variable/
function get_url_contents($url){
if (function_exists('curl_init')) {
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_URL, $url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
} else {
return file_get_contents($url);
}
return 'Could not retrieve url';
}
// Output content from url
header('Content-type: ' . $type);
echo get_url_contents(urldecode($_REQUEST['url']));
?>
這幾乎垃圾尋找,但它工作得很好的時刻。我希望它有幫助。
嗯,嗯,我認爲通常的解決方案是提供一個代理腳本,它與您的頁面位於同一個域中。那還是JSONP。 – tdammers 2011-01-13 23:32:01
不,我不想知道 – mkoryak 2011-01-13 23:57:49