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

那个网站可以查询美做空基金秦皇岛seo招聘

那个网站可以查询美做空基金,秦皇岛seo招聘,wordpress字体大小代码,网站建设禁止谷歌收录的办法目录 前言 一、验证码与登录 二、使用步骤 1.先apipost测试一波 2.先搞验证码 3.跨域问题 4.后端走起 总结 前言 近期要做一个比较完整的demo,需要自己做一个前端登录页面,不过api接口都是现成的,一开始以为过程会很easy,…

目录

前言

一、验证码与登录

二、使用步骤

1.先apipost测试一波

2.先搞验证码

3.跨域问题

4.后端走起

总结


前言

近期要做一个比较完整的demo,需要自己做一个前端登录页面,不过api接口都是现成的,一开始以为过程会很easy,但是由于跨域问题、后端代理、验证码关联登问题,还是小小折腾一些,正好将过程记录下。


一、验证码与登录

现代网站为了系统的安全性以及降低恶意攻击,一般都会在用户名、密码验证的基础上,增加验证码验证。

这里主要就涉及验证码关联问题,即怎么让后端知道后端生成的验证码就是对应我前端输入的验证码?以下我们就来一步步讲解。包括验证码、cookie、登录逻辑登

二、使用步骤

1.先apipost测试一波

通过apipost先把涉及的两个接口调用通了,然后再写代码。

测试发现,调用这两个接口的时候,都给传递同一个cookie即可成功登录。

那么,我写代码的时候,也生成一个cookie,给这两个接口传递同一个cookie应该就可以了。

2.先搞验证码

<div class="mb-6"><label for="captcha" class="block text-gray-700 text-sm font-bold mb-2">验证码</label><div class="flex gap-2"><input type="text" id="captcha" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required><img id="captchaImage" alt="验证码" class="h-10 cursor-pointer" onclick="refreshCaptcha()"></div>
</div><script>// 刷新验证码async function refreshCaptcha() {const captchaImage = document.getElementById('captchaImage');const url = `http://xx.com/api/captcha?t=${Date.now()}`;captchaImage.src = url;}// 页面加载时刷新验证码window.onload = refreshCaptcha;</script>

3.跨域问题

由于原有接口的安全性设置,进行了CORS跨域设置,导致前端无法直接请求。

另外,出于安全考虑,前端也无法手动给后端传递cookie,正常过程是后端给前端返回cookie,然后后续调用后端接口会自动传递当前域下的cookie。

这里通过apipost工具、后端写代码都没问题,主要是对浏览器请求做了限制,准确说是浏览器的一种安全机制。

在不能调整原有接口的CORS设置的情况,那就只能自己写后端代理接口,那么关键就是让后端可以成功调用,那么问题基本就解决了。

4.后端走起

后端实现生成验证码是很顺利,但是在登录逻辑这里发现前面说的“给这两个接口传递相同的cookie”的假设无法成功登录。

再次F12看原系统登录请求,发现获取验证码的接口会返回cookie,然后登录的时候传递了这个cookie。之前一直没注意到,是当前问AI的时候,AI跟我说的是获取验证码会通过Set_Cookie返回cookie,实际直接就是cookie,而且还不是每次请求都会返回,可能本地有了就不返回?

按照最新思路,重新调整逻辑:

1)获取验证码,获取到cookie;设置到前端

2)登录逻辑,自动传递到后端,后端再把这个cookie传递给实际登录接口。

ok搞定。

@app.get("/captcha")
async def get_captcha(request: Request):target_url = f"{KAPTCHA_URL}?t={int(time.time()*1000)}"try:resp = requests.get(target_url, stream=True)cookie_val= resp.cookies["cookie_key"]response = StreamingResponse(resp.iter_content(chunk_size=64), media_type=resp.headers["Content-Type"])# 开发环境临时禁用Secureresponse.set_cookie(key="cookie_key",value=cookie_val,httponly=True,samesite="Lax",  # 开发环境使用Laxsecure=False,  # 开发环境禁用Securepath="/",)return responseexcept Exception as e:return JSONResponse(content={"error": str(e)}, status_code=500)@app.post("/user/login")
async def proxy_login(request: Request):# 获取 form-dataform_data = await request.form()# 单独获取某个字段login_id = form_data.get("loginId")password = form_data.get("password")kaptcha_code = form_data.get("kaptchaCode")cookies = request.cookiescookie_val = cookies.get("cookie_key")try:response = login(login_id, password, kaptcha_code, cookie_val)return JSONResponse(content=response.json(), status_code=response.status_code)except requests.RequestException as e:return JSONResponse(content={"errCode": ErrCode.FAILURE.value,"errMsg": str(e),"data": {}},status_code=500,)


总结

以上就是今天要讲的内容,本文主要介绍了自己写前端集成已有验证码、登录接口过程中遇到的问题以及如何解决,希望可以帮助到大家。

本文重点总结:

1)前端安全性考虑,前端无法跨域访问后端接口,无法直接给后端传递cookie。调用后端接口的时候,会默认把当前域下cookie传递到后端

2)验证码与登录逻辑,验证码接口会返回一个cookie,调用登录接口的时候传递这个cookie,实现前后端同一个验证码的关联验证

http://www.dtcms.com/wzjs/78445.html

相关文章:

  • 自己做的网站源码如何安装成功的网络营销案例有哪些
  • 建公司网站哪家好百度指数移动版怎么用
  • 做网站被骗去哪投诉广州百度seo代理
  • 找公司做网站需要咨询什么问题新郑网络推广
  • 做相册集什么网站竞价托管 微竞价
  • 网站自己做还是用程序aso应用优化
  • 专门做评测的网站郑州百度推广seo
  • 上海云盾为网站做防护搜狗整站优化
  • 在什么网站做知识禁毒竞赛美区下载的app怎么更新
  • 深圳公司网站开发冯耀宗seo课程
  • 网站快排是怎么做的抖音seo优化
  • 做网站什么软件好百度电脑版网址
  • 微信公众上传wordpress手机seo关键词优化
  • seo技巧优化站长之家seo查询
  • 12306网站谁做的网店运营具体做什么
  • 做卖车网站需要什么手续fba欧美专线
  • 怎样建立平台亚马逊seo关键词优化软件
  • 做58推广网站找哪家好黄页88网站推广效果
  • 学做宝宝辅食的网站推广之家app
  • 免费推广网站平台黄色二手交易平台
  • 珠海做公司网站手机优化软件排行
  • 网站建设报价选兴田德润刷关键词优化排名
  • 网站建设适合什么单位百度影音在线电影
  • 做照片书网站好2345网址导航桌面版
  • 河南互助网站建设查询域名网站
  • 做设计任务的网站seo网络营销推广公司深圳
  • 如何做微信小程序开发有必要买优化大师会员吗
  • 网页设计个人网站心得体会今天的头条新闻
  • 网站建设怎么自学专门搜索知乎内容的搜索引擎
  • aso.net 网站开发深圳百度seo怎么做