簡體   English   中英

如何在不使用sails.io客戶端幫助程序方法的情況下向sails.js控制器發出請求

[英]How to make a request to sails.js controller without using sails.io client helper methods

我正在開發一個使用sails的應用程序,我必須從外部源連接。 它們可以是IOS或Android移動應用程序,也可以只是外部html客戶端。

在這方面,我不能使用sails輔助方法來使控制器操作處理Web套接字請求。

當我讀完sails.io客戶端文件時,我想我可以使用。

socket.emit('get' , {url:'/tomato' , data:{message:'pony'}} , function(response){});

模仿sails socket.get()函數,但它無法正常工作。

sails登錄終端顯示以下消息:未返回會話數據,並且第一次保存會話數據時遇到錯誤:undefined。

對不起你不得不放棄! 這是一個相當普遍的問題,通過套接字與第三方進行通信。 它實際上與Sails助手函數無關,而你使用socket.emit來復制socket.get功能是完全有效的。 不幸的是,在Sails v9中,這個案例的錯誤消息(明顯)被破壞了,但要點是:在連接套接字之前,需要從第三方域獲取cookie。 這意味着向該域發出JSONP請求。 Socket.io實際上可以為您做到這一點,盡管您可能必須在調用io.connect之前手動設置io.util.ua.hasCORS = false 或者,您可以在遠程服務器上創建JSONP端點並自行命中。 無論哪種方式,一旦你有第三方cookie,套接字握手應該可以正常工作,並允許你的站點和Sails服務器之間的完美通信。

編輯

事實證明, io.util.ua.hasCORS方法無效,它會導致向遠程服務器發出JSONP請求,但響應不會附加cookie,因此它不會得到任務完成。 但是,當下一版本的Sails發布時,它將包含一個從外部域請求cookie的機制,並將在sails.io.js中在后台自動處理連接。 另請注意,您需要在Sails應用程序的/config/sockets.js文件中將authorization設置為false ,以允許套接字從遠程域進行連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM