一串網址其實是這樣組成的:
scheme://host.domain:port/path/filename
舉例如下:
http://www.yahoo.com:8080/html/hello.php
http = scheme
www = host
yahoo.com = domain
8080 = port
html = path
hello.php = filename
所謂的同源,意思是scheme, host, domain, port 都一樣,就是同源。 同源政策是瀏覽器基於安全性考量而存在的一個政策,針對瀏覽器指令碼的限制。 假如今天我設計一個網站,透過ajax去拿別人的網頁資料,因為不同源,違反同源政策,js就無法拿到回傳的資料。 當然如果我不透過瀏覽器,就沒有這個限制了。 若是單純的把別人網站的img嵌入自己的網站,或是轉址到別人網站,或將別人網站用iframe嵌入自己網站,使用script src="xxx"/script,import css等等,則不受同源政策限制。
那麼有沒有什麼方式,可以讓我的javascript可以拿到不同源的資料呢?
有的,這邊就要提到CORS了,請參考下一篇。