美文网首页Cssh5面试
http请求发两次(get and options)

http请求发两次(get and options)

作者: Litchi_015f | 来源:发表于2019-11-26 11:30 被阅读0次

    前言

    自后台restful接口流行开来,请求了两次的情况(options请求)越来越普遍。


    options
    get

    为什么发生两次请求

    http的请求方式,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT等八种请求方式。其中,get与post只是我们常用的请求方式。
    我们能在图一里看到,第一条的请求方式为options,第二条请求,才是我们预想中的请求。所以为什么发生两条请求的原因就变成了为什么发生options请求。

    如何产生options请求:

    产生options请求的原因包括以下几条:

    注释内容用白话说就是:在发生正式的请求之前,先进行一次预检请求。看服务端返回一些信息,浏览器拿到之后,看后台是否允许进行访问。

    1:产生了复杂请求。复杂请求对应的就是简单请求。简单请求的定义是:
    请求方法是GET、HEAD或者POST,并且当请求方法是POST时,Content-Type必须是application/x-www-form-urlencoded, multipart/form-data或着text/plain中的一个值。
    请求中没有自定义HTTP头部。
    所谓的自定义头部,在实际的项目里,我们经常会遇到需要在header头部加上一些token或者其他的用户信息,用来做用户信息的校验。
    2:发生了跨域。

    options请求如何避免

    其实通过以上的分析,我们能得出以下解决方案:

    1:使用代理,避开跨域。
    2:将复杂跨域请求更改为简单跨域请求。
    3:不使用带自定义配置的header头部。

    相关文章

      网友评论

        本文标题:http请求发两次(get and options)

        本文链接:https://www.haomeiwen.com/subject/ryrewctx.html