javascript 跨域問題以及解決辦法
什么是跨域問題?
跨域這個問題是由于瀏覽器的同源策略引起的,請求的URL地址,必須與瀏覽器的URL是相同協議、相同域名、相同端口的,否則是不允許訪問的
| 瀏覽器URL | 要訪問的URL | 結果 |
|---|---|---|
| http://www.123.com/index | http://www.123.com/server | 成功 |
| http://www.123.com/index | http://www.456.com/server | 域名不相同,跨域 |
| http://www.123.com:8080/index | http://www.123.com:8888/index.htm | 端口不同,跨域 |
| http://www.123.com/index | https://www.123.com/index | 協議不同,跨域 |
解決辦法
凡是擁有src屬性的標簽都可以跨域,比如script、img、iframe標簽
JSONP
JSONP就是應用了script標簽,JSONP的全稱是JSON With Padding,JSONP由兩部分組成,回掉函數和數據,回掉函數就是當響應到來時應該在頁面中調用的函數,回掉函數的名字是在請求中指定的,而數據就是傳入回掉函數的JSON數據
例子:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><script type="text/javascript"> function jsonCallback(data){ alert(data); }; var url = "http://localhost:8888/test?callback=jsonCallback"; var script = document.createElement('script'); script.type = "text/javascript"; script.setAttribute('src', url); document.getElementsByTagName('head')[0].appendChild(script);</script></head><body></body></html>缺點:確認JSONP請求是否失敗并不容易
安全性的問題,JSONP是從其他域加載代碼執行,所以要確定其可靠性
以上就是javascript 跨域問題以及解決辦法的講解,大家如果 有疑問可以留言討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答