【发布时间】:2018-04-08 19:34:29
【问题描述】:
我已将 CORS 标头添加到服务器上的响应对象中,并且所有桌面浏览器都允许 ajax 调用完美返回。但是,我没有看到任何移动浏览器上的数据,结果证明它是一个 CORS 错误
任何想法为什么会发生这种情况?
客户代码:
getCharacter(completionFunc){
$.ajax("http://somewhere.com/api/character/0", {
//dataType: 'jsonp',
success: function(data) {
completionFunc(data);
}
});
}
服务器头代码(laravel):
public function handle($request, Closure $next)
{
return $next($request)
->header("Access-Control-Allow-Origin","*")
->header("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS");
}
在将标头添加到服务器之前,我在桌面浏览器上遇到了 cors 错误(如预期的那样)。添加它们修复了它,但不是在移动设备上。在处理 CORS 时,chrome 移动/桌面之间是否有任何显着差异? (我也在 ajax 调用上尝试了 jsonp dataType,但没有用)
【问题讨论】:
-
你是假设还是你测试过有CORS错误?你能用移动设备做测试吗?
-
“我是网络开发新手,所以我还不知道如何调试移动网络浏览器” - 然后输入我突出显示的部分进入谷歌...stackoverflow.com/q/5794984/1427878
-
对于每个对此感到不安的人,我确实根据 Boratzan 对其进行了调试,并且确实该错误与 cors 相关。
-
您知道为什么会这样吗?仅在 android chrome 上遇到相同的问题。
-
如果你使用端口转发 => 你需要为你的前端和你的后端 api 做端口转发。这可能不是 cors 问题 => 可能只是您没有为前端或后端 url 完成端口转发
标签: jquery ajax laravel google-chrome cors