2 在SpringBoot中进行重定向的最简单方式是使用RedirectAttributesaddFlashAttribute()方法,该方法需在重定向的控制器方法中调用。
在这个方法中,除了加入需要携带的数据对象之外,也可以加入头信息,进而实现携带head。
3 举个例子:在控制器方法中使用RedirectAttributes重定向,并添加头信息,可以使用以下代码: ```
@RequestMapping("/redirectWithHeader")
public String redirectWithHeader(RedirectAttributes attributes) {
attributesaddAttribute("name", "Spring Boot");
attributesaddFlashAttribute("message", "This is a redirect with header");
>aspnet是动态网页,服务器优先执行aspnet后置代码然后返回数据到前端,
<javascript>会预先加载,放在什么位置就什么时候加载
<head><html>是前端代码按顺序执行
<form>是表单,用户触发了会向服务提交数据然后反馈到前端。其实curl里面早就有对HEAD协议的支持// 只需要在你的代码中加上这样一行,就会自动选择head协议
curl_setopt($ch, CURLOPT_NOBODY, true);
如果你要读取
Content-Length
,那么只需要在curl_exec后// 读取的header里的Content-Length值
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
需要说明的是HEAD协议虽然被大部分服务器支持,但也不是说所有的服务器都支持,有的服务器为了防抓取,在设置中干掉了这个协议。而
Content-Length
也不是必须的字段,你应该做到如果有这个值,而且超过了最大值,可以返回错误,如果没有这个值,或者没有超过最大值,就必须自己通过已经下载的内容大小来判断。
至于你说的最大资源下载长度,我还没看到这个设置项,不过这个问题有一个更加美好的解决方案,那就是用到
CURLOPT_HEADERFUNCTION和CURLOPT_WRITEFUNCTION
两个回调,那么就只需要一次请求即可完成所有的判断,而且可以随时断掉$size = 0;$max_size = 123456;
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) {
// 第一个参数是curl资源,第二个参数是每一行独立的header!
list ($name, $value) = array_map('trim', explode(':', $str, 2));
$name = strtolower($name);
// 判断大小啦
if ('content-length' == $name) {
if ($value $max_size) {
return 0; // 返回0就会中断读取}}});
// 对于没有content-length的,我们一边读取一边判断
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $str) use (&$size) {
$len = strlen($str);
$size += $len;
if ($size $max_size) {
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)