微信公眾平台開發——為何不能在網頁調用微信jsapi?


說到這問題,相信大部分程序員老手都會輕蔑一笑,當然是跨域導致的啊!但是為了一些小白,我覺得還是很有必要再說一次的。

首先介紹什么是跨域,由於瀏覽器的同源策略,出於防范跨站腳本的攻擊,禁止客戶端腳本( 主要是JavaScript)對不同域名的服務器接口進行跨站調用。一般,只要網站的 協議名protocol(HTTP、ftp等)、 主機host、 端口號port 這三個中的任意一個不同,網站間的數據請求與傳輸便構成了跨域。

公眾號開發,要想在前端調用jssdk,先要通過config接口注入權限驗證配置。也就是先要獲取wx.config 中參數的值。由於其中的參數值需要通過access_token和jsapi_ticket這兩個參數來運算得到,而這兩個參數需要請求微信接口才能獲取,微信接口域名跟我們的網頁明顯不在同一域名下,所以造成跨域,從而導致我們無法在前端獲取配置的參數。因此我們只能通過服務器用服務器端語言php java c#等進行相關微信接口的請求。

另外,也有人非得用前端去請求,比如我,通過JSONP形式去請求數據,首先:JSONP這種非官方協議是需要后台配合寫返回數據的,也就是返回回調函數,微信不可能做這個,數據不安全。

總而言之,言而總之,微信就是要讓你在后台使用服務端語言請求接口!!也為了安全!

java版的jssdk 接口出入配置參見http://www.cuiyongzhi.com/post/57.html

2017/7/17  更新, 后來我又想能不能把js寫在php中用ajax請求微信接口,試了不行,js不是后台語言根本不在服務器端運行,除非用nodejs 有專門的解釋器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM