• 请求uniRequest,会请求两次


    实际上就是服务器要预检一次接口,默认5,6秒一次,可自行更改
    'Access-Control-Allow-Headers', 'appId' 来允许服务器请求中携带字段appId,如果还有其它字段,可以用逗号分隔填入;

    'Access-Control-Allow-Methods',': POST, GET, OPTIONS'来允许服务器允许客户端使用 POST, GET 和 OPTIONS 方法发起请求;

    添加完毕之后,响应头中增加对应字段,可以成功实现带自定义首部字段的跨域通信。

    1
    2
    3
    4
    5
    6
    //响应头局部:
    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Access-Control-Allow-Headers: appId
    Access-Control-Allow-Methods: POST, GET, OPTIONS
    Access-Control-Allow-Origin: *

    但是我们发现每次这种情况都会触发OPTIONS请求,然后再去执行业务逻辑,虽然正常执行了,但是一个请求变成了两个,肯定增加了用户等待时间和服务器资源消耗,于是又在响应头中增加了Access-Control-Max-Age: 86400;表明该响应的有效时间为 86400 秒,也就是 24 小时。在有效时间内,浏览器无须为同一请求再次发起预检请求。浏览器自身维护了一个最大有效时间,如果该首部字段的值超过了最大有效时间,将不会生效。最后同一天内一个接口就只有一次OPTIONS请求啦,大功告成!

  • 相关阅读:
    IntelliJ IDEA 设置代码提示或自动补全的快捷键
    spring框架学习(一)
    java数据库连接池技术原理(浅析)
    Spring事务管理
    Android invalidate 用法
    sharedPreferences存储文件
    Android Service组件
    SQLite版本升级
    在android.app.Application中定义全局变量 .
    android观察者模式
  • 原文地址:https://www.cnblogs.com/ydam/p/10983523.html
Copyright © 2020-2023  润新知