求助帖:ThinkPHP6 接口跨域请求,前端添加了自定义请求头导致请求无响应

有两个项目,项目一 是用thinkphp6做接口,项目二是 H5 + css + jquery 写的前端页面, 项目二通过ajax请求项目一定义的登录接口,接口返回token给项目二,然后项目二将token缓存到本地,项目二访问项目一的其他接口都要携带token用于验证,我在发送ajax请求的时候在请求头里携带了token,接口那边就无响应,本来POST的请求也变成了OPTIONS,回来跟其朋友问过,说要在THINKPHP项目里设置允许响应的类型和允许响应的请求头,然后我在入口文件添加了header,如下;
header('Access-Control-Allow-Methods:POST, GET, OPTIONS');
header('Access-Control-Allow-Headers:x-requested-with,content-type,AccessToken');
但是依然没有任何反应,有人说是跨域的问题,但是跨域我是在路由文件里面设置了允许跨域访问的站点的,而且不携带token的时候是可以正常返回接口数据的,如果您有处理这些问题的经验或者有好的想法,还请不吝赐教,谢谢。

最佳答案

已解决:

Route::group('', function () {
    Route::post('/users/index','admin/users/index');
})->allowCrossDomain(['Access-Control-Allow-Origin'=>'http://127.0.0.7','Access-Control-Allow-Credentials'=>'true']);
4年前 评论
讨论数量: 6

有遇到过类似问题的吗? :speak_no_evil:

4年前 评论
cnguu

是不是跨域,看浏览器控制台的报错就知道了

4年前 评论

你可以看下thinkPHP的路由模式,里面有提到跨域函数,使用很方改变,而且thinkPHP本身就是为了API,使用路由很方便维护升级

4年前 评论

我试过官方的跨域路由有自定义请求头的时候无效,现在是在钩子行为里处理跨域

4年前 评论
KangST 4年前

已解决:

Route::group('', function () {
    Route::post('/users/index','admin/users/index');
})->allowCrossDomain(['Access-Control-Allow-Origin'=>'http://127.0.0.7','Access-Control-Allow-Credentials'=>'true']);
4年前 评论
Route::group('', function () {
    Route::post('/users/index','admin/users/index');
})->allowCrossDomain();

这样就可以

4年前 评论
李先森 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!