php 杂项(4)tp6 跨域问题

前言

  后台代码允许跨域,都是通过为http请求响应增加允许跨域的响应头来实现的.

原生

  //使用header助手函数设置响应头

      header('Access-Control-Allow-Credentials:true');//响应报头指示的请求的响应是否可以暴露于该页面(前端的请求是否可以携带cookie凭证)。当true值返回时它可以被暴露。
        header('Access-Control-Max-Age:1800');//请求缓存的时间,同一时间类发起相同的直接读取缓存
        header('Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE, OPTIONS');//允许请求的类型
        header('Access-Control-Allow-Headers:Authorization, Content-Type, If-Match');//允许请求头携带的自定义参数,如果你需要在请求头添加参数,那么你需要在这里设置参数字段
        header('Access-Control-Allow-Origin:*');//允许所有域名访问

tp6

  //在app目录下的middleware.php文件中,添加  hinkmiddlewareAllowCrossDomain::class 类。它就是tp6对原生方法的封装---其本质也是在通过对响应头的设置来实现跨域。

  1. 前端如果要在请求头上添加自定义的字段参数,那么就需要在Access-Control-Allow-Headers字段中设置对应的字段
  2. 前端在发送跨域请求是,如果想携带或者将响应的cookie写入浏览器,必须将请求头字段withCredentials设置为true,否则,将请求无法携带cookie也无法写入响应的cookie。但同源请求不受限制
原文地址:https://www.cnblogs.com/wrhbk/p/14755366.html