CGB2005 0915 jt16

不加.html是方便搜索引擎好检索

关于跨域的说明

聚合工程


访问了页面 才会访问ajax 打印json


关于跨域的说明
1.1 跨域访问测试
测试1: 同服务器测试
说明:
1.浏览器的网址信息: http://manage.jt.com/test.html
2.ajax请求的地址信息: http://manage.jt.com/test.json
发现: 请求协议名称://域名:端口号都相同时,请求可以正常进行.
测试2: 不同的服务器测试
说明:;
1.浏览器的网址信息: http://www.jt.com/test.html
2.ajax请求的地址信息: http://manage.jt.com/test.json
结论: 域名地址不相同时请求不能正常获取响应的结果.



启动两个服务器






f12


综上总结


同源策略介绍
说明:
浏览器在解析ajax时,如果发现请求的协议名称://请求的域名:请求的端口号与网址的地址都相同的时满足同源策略的规定,浏览器可以正确的解析返回值.该访问称之为同域访问.该策略叫做同源策略.
但是如果违反了同源策略中的任意一条,则叫做跨域访问.浏览器出于安全性的考虑.不予解析返回值(请求正常的被处理,但是接收不到返回值).
概括: 浏览器解析ajax时,由于请求违反了同源策略则称之为跨域请求.

概况
:浏览器解析ajax时,由于请求违反了同源策略则称之为跨域请求



例子: http://localhost:8091/xxx.html
http://manage.jt.com/xx.html 不可以通讯
因为http://manage.jt.com/xx.html 经过了nginx代理服务器
jsonp实现跨域

web-对应网址 ww.jt.com

script 的src 写的url 不受同源请求策略的影响


对应上图 调用函数的证据







自我实现


JSONP官方做法(江哥)
1.javaScript中的src属性不受同源策略的约束.可以获取远程服务器数据.
<!--该json一直保存到浏览器中等待调用,但是没有函数名称无法调用 --><script type="text/javascript" src="http://manage.jt.com/test.json"></script>
2.自定义回调函数 名称任意
/*定义回调函数 */function hello(data){alert(data.name);}
3.将返回值结果进行特殊的格式封装 callback(JSON);
hello({"id":"1","name":"tomcat猫"})
总结
jt-web里面








jsonp只能支持get请求


不需要手动封装了

测试案例




自我实现
访问



新建测试



原先



自我是实现


报错








解释return callback+"("+json+")";
分析ajax 原理不变

后端业务的controller

全新的 分开
前后台分离

都是json

新的API调用
总结 都是www.jt.com跨域去访问manage里面的json数据
借助src去访问 共性jsonp 还有利用工具API
编辑的html时 jt-web里面的JSONP.html controller编写的时jt-manage是里面的JSONPController 去对被访问的manager进行桥接


api测试自我实现


完美实现

关于ajax请求时间毫秒数的说明



CORS跨域 是最简单的跨域 需要服务器标注就行
说明:当下的主流的浏览器默认支持cors跨域的形式,但是需要服务器添加响应的信息.否则浏览器不支持数据的获取.
拿manage里面的 test.html和test.json举例子







CORS跨域说明

例子 进小区 主人给了礼物让带走 保安检查是不是偷的 需要标识(主人的字条) 标识就等于字条

前台向后台 服务器运行才行







晚上 缺图 (over)

默认是30min



跨域测试



自我实现 CORS跨域方式



前台web服务器 到 后台manage服务器 通知服务器 开放浏览器的允许 就行


下午
京淘单点登录系统
2.1 通用页面跳转
2.1.1 业务分析
1.注册的url地址
京淘单点登录系统创建





自我实现




创建jt-sso项目
创建JT-SSO项目 JT-SSO项目说明
作用:主要为jt-web的服务器提供用户的数据的支持,但凡涉及到user的CRUD操作都应该由该系统完成.
打包方式: jar包程序
注意事项: 继承jt/ 依赖jt-common 添加插件.
端口号: 8093





<!--添加依赖--><dependencies><dependency><groupId>org.example</groupId><artifactId>jt-common</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies><!-- 添加插件 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.3.RELEASE</version></plugin></plugins></build>
POJO表


搭脚手架



conf


自我实现
更改好yml配置文件 和 nginx的conf配置文件
搭脚手架










完美实现
开始实现注册登录


前后端开发







分析js








校验的业务分析


自我实现





16.14 晚上 回看




自我实现
/**
* JSONP的跨域请求 特殊的格式封装…
* 需求分析:校验用户的数据是否可用.
* url: http://sso.jt.com/user/check/{param}/{type}
* 参数: param/type
* 返回值结果: SysResult对象
*/




实现效果如下

还缺dao层 查询数据库校对 已有basemapper 不用手动查

http://sso.jt.com/user/check/addxxx/1?r=0.2782759446132195&callback=jsonp1600158461341&_=1600158464802
要加callback


/*** JSONP的跨域请求 特殊的格式封装.....* 需求分析:校验用户的数据是否可用.* url: http://sso.jt.com/user/check/{param}/{type}* 参数: param/type* 返回值结果: SysResult对象*/@RequestMapping("/check/{param}/{type}")public JSONPObject chcekUser(@PathVariable String param,@PathVariable Integer type,String callback){//根据信息查询数据库获取响应记录Boolean flag = userService.checkUser(param,type);return new JSONPObject(callback, SysResult.success(flag));}
自我实现



处理全局处理机制的修改




自我实现

package com.jt.aop;import com.fasterxml.jackson.databind.util.JSONPObject;
import com.jt.vo.SysResult;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;@RestControllerAdvice //作用: 标识我是一个通知方法,并且只拦截Controll层的异常.并且返回JSON.
public class SysResultException {//需要定义一个全局的方法 返回指定的报错信息.//ExceptionHandler 配置异常的类型,当遇到了某种异常时在执行该方法.//JSONP的异常处理应该是 callback({status:201,msg:"",data:""})//利用Request对象动态获取callback参数.之后动态封装返回值@ExceptionHandler(RuntimeException.class)public Object exception(Exception e, HttpServletRequest request){e.printStackTrace();String callback = request.getParameter("callback");if(!StringUtils.isEmpty(callback)){ //jsonp请求return new JSONPObject(callback, SysResult.fail());}//日志记录/控制台输出. 让程序员知道哪里报错!!!return SysResult.fail();}
}
为了更好的让程序员知道后台出了什么错
怎么去试错
微服务框架的介绍






17.18一番话
jsonp 浏览器解析ajax xxxxxxxxxxx
入门案例






自我实现
HttpClient入门案例
导入jar包
<!--添加httpClient jar包 --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency>
入门案例
package com.jt.test;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;import java.io.IOException;public class TestHttpClient {/*** 步骤:* 1.实例化httpClient工具API* 2.定义请求url地址 任意网络地址....* 3.定义请求的类型 get/post/put/delete* 4.发起请求,获取响应的结果* 5.判断响应的状态码信息. 200 404 500 406 400....* 6.动态解析返回值执行后续操作.*/@Testpublic void test01(){HttpClient httpClient = HttpClients.createDefault();String url = "https://www.baidu.com/";HttpGet get = new HttpGet(url);try {HttpResponse httpResponse = httpClient.execute(get);//判断状态码是否正确int statusCode = httpResponse.getStatusLine().getStatusCode();if(statusCode == 200){//表示请求正确HttpEntity httpEntity = httpResponse.getEntity(); //获取服务器的全部响应信息(json/html/xml/xxxx)String result = EntityUtils.toString(httpEntity,"UTF-8");//获取之后可以执行业务处理......System.out.println(result);}} catch (IOException e) {e.printStackTrace();}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
