当前位置: 首页 > news >正文

青海找人做网站多少钱/百度一下 你就知道官网

青海找人做网站多少钱,百度一下 你就知道官网,耐克运动鞋网站建设规划书框架,绍兴高端网站开发最近在用uniapp做一个h5的项目(与后台不是同域),在开发的时候发现了一个跨域的问题,一般跨域的问题就是后台配置的问题了~一般百度找到的方法,就是在入口文件index.php中添加以下代码:header( "Access-Control-Allow-Origin …

最近在用uniapp做一个h5的项目(与后台不是同域),在开发的时候发现了一个跨域的问题,一般跨域的问题就是后台配置的问题了~

一般百度找到的方法,就是在入口文件index.php中添加以下代码:

header( "Access-Control-Allow-Origin : *" );

header( "Access-Control-Allow-Methods : POST,GET,OPTIONS" );

有的时候,这样也行,一开始我也是这么弄的,正常请求了

随便弄了一个路由测试的,没有问题,但是当放在uniapp的request请求的时候就报错了,因为请求head中添加了自定义参数token(身份验证,这个就不多说了)

经过测试发现,只要不在head中添加自定义参数就没问题,于是接着找资料,发现还要添加一行:

header( "Access-Control-Allow-Headers : Token,Accept,Accept-Encoding,Accept-Language,Connection,Content-Length,Content-Type,Host,Origin,Referer,User-Agent,X-DevTools-Emulate-Network-Conditions-Client-Id" );

意思就是将所有用到的head参数都写进去

---------------分隔线------------

本来到这就结束了,但实际并不是这样。。。。

在找资料的时候,发现一种使用tp5的钩子的方法,感觉不错,于是删除了上面添加的代码,改成下面这样:

1、在application\common 下新建behavior目录,在添加添加CronRun.php文件,内容如下:

namespace app\common\behavior;

use think\Exception;

use think\Response;

class CronRun

{

public function run(&$dispatch){

$host_name = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : "*";

$headers = [

"Access-Control-Allow-Origin" => $host_name,

"Access-Control-Allow-Credentials" => 'true',

"Access-Control-Allow-Methods" => 'POST,GET,OPTIONS',

"Access-Control-Allow-Headers" => "Token,Accept,Accept-Encoding,Accept-Language,Connection,Content-Length,Content-Type,Host,Origin,Referer,User-Agent,X-DevTools-Emulate-Network-Conditions-Client-Id"

];

if($dispatch instanceof Response) {

$dispatch->header($headers);

} else if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {

$dispatch['type'] = 'response';

$response = new Response('', 200, $headers);

$dispatch['response'] = $response;

}

}

}

2、在application\tags.php 文件中修改两处:

// 应用行为扩展定义文件

return [

// 应用初始化

'app_init' => [],

// 应用开始

'app_begin' => [

'app\\common\\behavior\\CronRun'

],

// 模块初始化

'module_init' => [],

// 操作开始执行

'action_begin' => [],

// 视图内容过滤

'view_filter' => [],

// 日志写入

'log_write' => [],

// 应用结束

'app_end' => [

'app\\common\\behavior\\CronRun'

],

];

3、没有3了,这样就可以了,好爽,而且入口文件也没有动,感觉还是不错的。

然而,此时坑来了(当然,与上面的代码没有关系)

如果使用了tp5的路由,因为这个项目专门的接口项目,所以配置了config.php文件,启用了强制路由,然后为了保证系统的安全,在配置路由的时候没有使用Route::rule,而是根据接口使用的Route::get或Route::post

这时候我发现一个问题,h5请求接口的时候又跨域了,恩。。。。。闹心,经过排查发现,就是1、开了强制路由,2、定义路由的时候使用的Route::get,直接就写死了接口所允许的请求类型(Route::post定义的使用get请求就不行),而跨域会先发一个Option请求,系统正常响应后再发起正常请求,而我用了强制路由,所以一开始的Option请求就没有正常响应,所以。。。。

总结:

1、要么不使用强制路由

2、要么使用Route::rule或在第三个参数里面配置GET与OPTION

3、别忘了配合上面的代码一起使用~

http://www.lbrq.cn/news/1288477.html

相关文章:

  • 小而美企业网站建设/网络运营工作内容
  • 新网站怎么做排名/公司网络营销策略
  • 做时间轴的在线网站/站内seo和站外seo区别
  • 中铁建设集团有限公司华北分公司/seo外包公司专家
  • 快速做效果图的网站叫什么区别/seo技术培训教程视频
  • 做彩平的网站/一个产品的宣传和推广方案
  • 邯郸网站建设优化排名/惠州百度seo哪家好
  • 联想企业网站建设的思路/南宁网站优化公司电话
  • 网站源码模块/可以发布软文的平台
  • 上海网站建设开/百度搜索首页
  • 织梦图片网站/网站建设明细报价表
  • 宜昌做网站公司/网站推广系统
  • 做网站一般用什么程序/河南网站网络营销推广
  • 做鼻翼整形整形的网站/南京百度seo排名优化
  • php会了 怎么做网站/seo优化的内容有哪些
  • 做网站需要什么硬件环境/网站优化排名操作
  • 什么网站做软件任务挣钱/竞价排名机制
  • 深圳网站建设吗/百度推广的广告靠谱吗
  • 什么网站做教育的比较多/新闻头条今日新闻
  • 郑州做网站费用/武汉大学人民医院东院
  • 神马站长平台/网站统计分析平台
  • 做企业网站进行推广要多少钱/创量广告投放平台
  • 美团外卖网站开发/百度手机助手苹果版
  • 怎么在建设厅网站报名/seo基础教程使用
  • 网站建设与发布的预算/旺道seo推广效果怎么样
  • 做网站的技术性说明/谷歌 chrome 浏览器
  • 建设企业网站管理系统目的/营销网站系统
  • 不良网站进入窗口免费正能量/二级域名网址查询
  • 极速微网站建设cms/seo如何优化
  • wordpress怎么更改地址/seo服务外包客服
  • java面试题(一)
  • 小白如何认识并处理Java异常?
  • Vim 编辑器全模式操作指南
  • 基于粒子群优化的PID控制在药液流量控制系统中的应用
  • 磁性材料如何破解服务器电源高频损耗难题?
  • Effective Python 第16条:用get处理字典缺失键,避免in与KeyError的陷阱