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

悬而未决:奇怪的不允许跨域CORS policy的问题

我在本地HBuilderX中进行预览写好的前端网页,它里面用了ajax访问了远程服务器的后端API网址,不出意外地报不允许跨域访问的错了:Access to XMLHttpRequest at ‘http://xxx.com/MemberUser/login’ from origin ‘http://mh.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

因为我后端用的是PHP,查了一下网上的资料,说是可以直接使用header输出Access-Control-Allow-Origin:*就行。但我加上后,发现浏览器中仍然没有这个header属性!但我用ApiFox来访问它,却是有这个属性!

因为我用的是nginx做反向代理到Apache+PHP-FPM服务器,所以我就在nginx配置文件中又明确增加这个header输出。好家伙,这下用ApiFox来访问它,直接有了两条一样的Access-Control-Allow-Origin:*。用浏览器也有了正常的一条。这我就奇怪了,上面这个现象说明nginx是没有过滤掉这个header的,应该是浏览器过滤掉了php输出的header,但它为什么又没有过滤掉nginx输出的这个header呢? 我想来想去,可能是因为用的PHP框架中我没办法把这个header输出到网页内容的头部区?

在NginX中增加了header输出,虽然解决了跨域的报错,但还出来一个新问题,就是用$.post()访问的时候后端ThinkPHP检测它又变成了非AJAX方式了!经过调试,发现原来是JQuery的$.post()也有跨域的问题,它会自动把跨域的访问去掉X-Requested-With:XMLHttpRequest这个header,导致服务器不再认可它是AJAX访问!

http://www.lryc.cn/news/414731.html

相关文章:

  • 索引优化秘籍:SQL Server数据库填充因子的调优艺术
  • ffmpeg 的内存分配架构
  • Vue+live2d实现虚拟人物互动(一次体验叙述)
  • 内联函数的概念和用途以及区别
  • rust 桌面 sip 软电话(基于tauri 、pjsip库)
  • Linux 进程优先级、程序地址空间、进程控制
  • 学习笔记一
  • Linux中信号的发送及信号的自定义捕捉方法
  • yum仓库的制作与使用
  • 牛客周赛54:D.清楚姐姐跳格子(bfs)
  • 用户空间 lmkd
  • 二叉树专题
  • Spring MVC 之简介及常见注解
  • 除了使用本地存储,还有哪些方法可以实现只出现一次的弹窗?
  • 微软蓝屏事件揭示的网络安全深层问题与未来应对策略
  • C#:通用方法总结—第11集
  • Web开发-html篇-下
  • 【C++从小白到大牛】多态那些事儿(上)
  • 网站在线查询工具箱源码分享
  • SSH简写且免密登陆终端设备
  • 算力共享中神经网络切片和算力分配策略
  • 3章4节:R的逻辑运算和矩阵运算
  • 使用EasyAR打包安卓操作注意
  • 驾驭PyCharm:破解环境配置的迷宫
  • 大数据技术原理-Hadoop的安装
  • 从根儿上学习spring 八 之run方法启动第四段(2)
  • 牛顿插值法代替泰勒公式
  • 为 Laravel 提供生产模式下的容器化环境:打造现代开发环境的终极指南
  • Visual Studio 和 VSCode 哪个好?
  • 百款精选的HTML5小游戏源码,你可以下载并直接运行在你的小程序或者自己的网站上