sha*_*uno 5 firefox cors laravel angularjs ionic-framework
在 Ionic 应用程序中发出跨源请求时,我只遇到 FireFox 问题(因此它使用的是 AngularJS)。js 应用程序正在对 Laravel 5.1 API 执行 $http.post(),我仅在 FireFox (39.0.3) 中收到以下错误:
跨域请求被阻止:同源策略不允许在http://blah.dev/endpoint读取远程资源。(原因:CORS 预检通道的 CORS 标头“Access-Control-Allow-Headers”中缺少令牌“content-type”)。
这是在我的本地主机(OSX Mavericks)上。并且在 Chrome 和 Safari 中运行良好,只有 FireFox 出现错误。我已经清除了缓存,并在“私人窗口”中进行了尝试,结果相同。
这是定义用于处理 OPTIONS 请求的 Laravel 路由:
Route::options('endpoint', function() {
return response('OK')
->header('Access-Control-Allow-Headers ', 'Origin, Authorization, X-Requested-With, Content-Type, Accept')
->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
->header('Access-Control-Allow-Origin', '*')
->header('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0')
;
});
Route::post('endpoint', array('uses' => '\Path\To\Controller@endpoint'));
Run Code Online (Sandbox Code Playgroud)
我确实发现这个问题似乎只在 FireFox 中有类似的问题,但解决方案是用逗号分隔Allow-Methods,我已经是。
在后端尝试放置
->header('Access-Control-Allow-Credentials', 'true')
Run Code Online (Sandbox Code Playgroud)
并在前端尝试放置
.config(function($locationProvider, $httpProvider) {
// CORS requests with credentials
$httpProvider.defaults.withCredentials = true;
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8481 次 |
| 最近记录: |