我必须使用承载令牌发出经过身份验证的HTTP请求。这在我测试过的所有内容上都可以正常使用...除了某些 iOS设备以外。
fetchWithToken : function( endpoint, token ){
return Vue.http.get( urlBase + endpoint, {
headers : {
Authorization : 'Bearer ' + token
}
});
},
据我所知,请求被发送了两次。请注意,此函数仅被调用一次(通过调试验证),但是服务器接收2个请求。第一个请求包含令牌并成功授权。第二个没有令牌并且失败,将失败返回给我的应用程序的其余部分。
来自一个调用的两个HTTP请求使我认为CORS是预检请求。但是,它是相同的域,上面函数中的urlBase变量是相对地址('/ api /'),而不是完整的URL。
iOS是否强制执行CORS?如果是这样,为什么发送的第二个请求没有授权标头,而不是预检请求?
答案 0 :(得分:0)
不良的事件组合。服务器(symfony应用程序)正在对未以斜杠结尾的端点执行301重定向。显然,iOS是唯一不让授权标头继续进行301重定向的用户代理。所以第一个请求有令牌,它是301'ed,第二个请求没有令牌。基本上需要3个小时的日志记录并跟踪所有内容以了解我需要使用/结束端点调用。