我正在嘗試使用帶.ajax調用的jQuery調用bit.ly URL縮短服務。jQuery .ajax調用bit.ly在IE中返回結果,但不返回FF或Chrome
更新我想知道這是否是一個跨域安全問題?我正在從mysite.com
調用bit.ly
<html><head>
<script type="text/javascript" src="http://www.twipler.com/settings/scripts/jquery.1.4.min.js"></script>
<script type="text/javascript">
jQuery.fn.shorten = function(url)
{
var resultUrl = url;
$.ajax(
{
url: "http://api.bit.ly/shorten?version=2.0.1&login=twipler&apiKey=R_4e618e42fadbb802cf95c6c2dbab3763&longUrl=" + url,
async: false,
dataType: 'json',
data: "",
type: "GET",
success:
function (json) { resultUrl = json.results[url].shortUrl; }
});
return resultUrl;
} ;
</script></head><body>
<a href="#"
onclick="alert($().shorten('http://amiconnectedtotheinternet.com'));">
Shorten</a> </body> </html>
這個工作在IE8,但在Firefox(3.5.9)不工作,也沒有在Chrome中。在這兩種情況下,'json'都是null。
頁眉在IE8
GET http://api.bit.ly/shorten?ver..[SNIP]..dtotheinternet.com HTTP/1.1
Accept: application/json, text/javascript, */*
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0;
SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; InfoPath.2;
.NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Host: api.bit.ly
Connection: Keep-Alive
頁眉在Chrome
GET http://api.bit.ly/shorten?versio..[SNIP]..nectedtotheinternet.com HTTP/1.1
Host: api.bit.ly
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5
(KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5
Origin: file://
Accept: application/json, text/javascript, */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
所以,唯一明顯的區別是Chrome正在發送 「來源:文件://」 和我不知道如何停止這樣做。
請注意,你應該**從來沒有**在現實世界中做到這一點。通過在瀏覽器中縮短時間,您可以將API密鑰暴露給整個世界。使用這些API密鑰,任何人都可以代表您縮短。 您應該始終像處理密碼一樣對待API密鑰和OAuth令牌。 您可以查看我們的[最佳實踐](http://dev.bitly.com/best_practices.html)doc瞭解更多信息。 – SeanOC 2014-04-24 12:37:01