Я хотел использовать опубликованные документы GoogleDocs и твиты Twitter в качестве источника данных приложения Silverlight, но столкнулся с clientaccesspolicy выпусками.
Я прочитал много статей , таких как , и , , о том, как трудно обойти проблему clientaccesspolicy .
Итак, я написал этот CURL-скрипт и разместил его на своем PHP-сайте, и теперь я могу получить текст любого документа GoogleDocs и ленты Twitter в моем приложении Silverlight :
<?php
$url = filter_input(INPUT_GET, 'url',FILTER_SANITIZE_STRING);
$validUrls[] = "http://docs.google.com";
$validUrls[] = "http://twitter.com/statuses/user_timeline";
if(beginsWithOneOfThese($url, $validUrls)) {
$user_agent = 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie");
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie");
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
echo curl_exec($ch);
} else
echo "invalid url";
function beginsWithOneOfThese($main, $prefixes) {
foreach($prefixes as $prefix) {
if(beginsWith($main, $prefix))
return true;
}
return false;
}
function beginsWith($main, $prefix) {
return strpos($main, $prefix) === 0;
}
?>
Так что меня удивляет:
- Почему так много дискуссий о том, поддерживают или нет URL-адреса клиентскую политику или нет, поскольку вам просто нужно написать простой прокси-скрипт и получить информацию через него?
- Почему нет услуг , например как сервисы сокращения URL, которые предоставляют эту функциональность?
- Каковы последствия для безопасности наличия такого сценария?