每次请求接口,jsessionId都要变化的解决方案

因为跨域请求是不会发送cookie等用户认证凭据的到服务端的,每次请求服务端都不能拿到之前的jsessionId,会认为这是一个全新的请求,所以重新生成了一个jsessionid。

首先,客户端要开放传输cookie的认证:

XHR请求

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/', true); 
xhr.withCredentials = true; 
xhr.send(null);

ajax请求:

$.ajax({
   url: 'http://example.com/',
   xhrFields: {
      withCredentials: true 
   },
   ...
});

fetch请求:

fetch(url, {
  credentials: 'include'  // 总是发送请求资源域在本地的 cookies、 HTTP Basic authentication 等验证信息.
})

服务端,以java为列:

Access-Control-Allow-Credentials: true  // 允许credentials:

但是
到这一步还没有结束,我们为了解决跨域问题设置的Access-Control-Allow-Origin:* 报错了:
在这里插入图片描述
那只能动态配置当前的访客为白名单:

'Access-Control-Allow-Origin', request.get('origin')

但是
又报了一个错误,预请求options未通过,
在这里插入图片描述
在这里找到了有效方法是:https://www.cnblogs.com/caimuqing/p/6733405.html

 if (request.getMethod().equals("OPTIONS")) {
      HttpUtil.setResponse(response, HttpStatus.OK.value(), null);
      return;
  }

在这里插入图片描述
总算问题得到解决,在这里记录一下踩坑历程,可以愉快地用jsessionId作为用户单一登录凭证啦

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Postman中携带JSESSIONID调用接口,可以按照以下步骤进行操作: 1. 首先,使用Postman进行登录接口请求,以获取JSESSIONID。这可以通过在打开的页面中按顺序操作获取[JSESSIONID=6DD9C0DFF656E96A45E3A3B99666DEEC; Path=/; Domain=localhost; Expires=Tue, 07 Jun 2022 10:31:07 GMT;。 2. 在接下来的请求中,将JSESSIONID作为请求头的一部分。这样可以确保每个请求都被视为同一个客户端操作,从而保持用户权限。 3. 可以将JSESSIONID作为名为"Cookie"的请求头字段的值进行设置。这样,Postman会自动将JSESSIONID携带在每个请求中。 通过以上步骤,在使用Postman发送请求时,JSESSIONID会被正确地携带,并且可以进行其他需要用户权限的接口访问。请确保JSESSIONID的值是正确的,并且请求头中的"Cookie"字段设置正确。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [postman设置cookie使访问接口携带cookie的参数(有登录接口的情况)](https://blog.csdn.net/weixin_43646396/article/details/117671068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [postman解决session验证问题,试用验证码校验,带登录状态的请求](https://blog.csdn.net/aGreySky/article/details/89091388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值