zoukankan      html  css  js  c++  java
  • 跨域时发送预检请求,tp5的restful无options方法的解决方案

    解决 跨域问题解决

    问题:使用vue-resource发送delete请求时报options请求404

    思考:明明发送的是delete请求,为何变成了options请求? 

    答:跨域情况下,PUT,DELETE或者是Content Type是application/json,均为“不是那么简单的请求”。针对这种请求,浏览器会在真实请求前,额外发起一次类型为OPTIONS的请求(Preflight request),只有服务器正确响应了OPTIONS请求后,浏览器才会发起该请求。而tp5没有定义options请求的路由,所以报了404错误。 

    解决方案:在tp5中定义一个路由规则,限定options方式请求, 

    Route::rule('xxx','xxx/delete','OPTIONS'); 

    然后在控制器方法中在返回头中定义可访问的方式: 

    header('Access-Control-Allow-Methods:POST, GET, PUT, DELETE, OPTIONS');

    这样就可以骗过浏览器的预检了。 

    另:跨域的Apache和Nginx配置就不贴了。vue-resource的content-type设置这里也不贴。 

  • 相关阅读:
    Lambda表达式
    java中解决小数精度问题
    [Unity]-黑魂复刻-动画 001
    kuka Virtual Remote pendant 连接使用
    C# 操作 pg 数据库
    C#常用字符串操作
    Go学习笔记之相关资源
    Go学习笔记之常用命令
    Go学习笔记之安装
    nginx学习笔记之安装
  • 原文地址:https://www.cnblogs.com/matengfei123/p/10008258.html
Copyright © 2011-2022 走看看