概述如何使用Safari作爲客戶端從WebAPI獲取JWT持票人令牌?
我有一個WebApi 2.0項目,它使用JWT令牌來保護端點。當用戶登錄到我的Web應用程序時,向API發出AJAX請求,API向用戶生成並返回一個不記名令牌,然後將其保存在sessionStorage客戶端,以便可以對受保護的端點進行請求。
請注意,我的web應用程序和API都使用CORS通過https託管。
問題
使用火狐,Chrome,Internet Explorer和邊緣時,這一切工作正常。但是,當我通過iPhone或iPad登錄到我的Web應用程序時,API甚至會被調用,因此不會返回令牌。這意味着我的Web應用程序無法從受保護的端點獲取數據,這實際上使其有點無用!
研究
Https requests with Authorization not working via Safari
它看起來像用戶在上面的問題是至少得到一個令牌從服務器,這比我在的那一刻找回。
有沒有人有任何洞察,爲什麼會發生這種情況?
更新2017年5月1日
只是爲了這個問題,並回答更準確。這對於不記名的令牌生成或消費來說並不是問題,簡單地說,Safari不會在沒有設置async:false的情況下向我的API發出AJAX請求。