PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

浏览器对HTTP_ORIGIN的差异性及其作用

管理员 2024-12-14
Fastadmin
8

为了在PHP中获取到当前访问网页的域名,采用了$_SERVER['HTTP_ORIGIN']
但是本人在做某个项目进行跨域请求的时候发现了一些坑,再次记录一下,
我是用apiPOST测试API接口的,用这个软件进行测试的时候,并不是进行跨域请求,或者是我自己不会设置,根据fastadmin的api基类使用到的 check_cors_request函数可以得知,使用的是$_SERVER['HTTP_ORIGIN']来进行跨域判断,这也就是导致我使用api测试工具的时候总是无法测出跨域的问题,然后我就测试了一下不同浏览器的请求头信息的差别
2.浏览器差异
在Chrome中测试当浏览器发送ajax的POST请求时,$_SERVER会存储哪些HTTP信息头
QQ20160401-4.png

而当FireFox执行相同的操作时
$_SERVER会返回什么
QQ20160401-5.png

这个FireFox并没有返回HTTP_ORIGIN
HTTP_ORIGIN作用
HTTP_ORIGIN主要是用来防止CSRF(跨域)攻击的(当然其实这并没什么卵用,header头是可以伪造的)
但是当Firefox包括其他的一些浏览器,会自行判断,当请求的域名和现在网站的域名一致时,不发送ORIGIN

  1. 解决方式
    用HTTP_HOST代替,这个HTTP_HOST是基本所有浏览器都会返回的信息头,所以用$Server['HTTP_HOST']来获取域名,会比较可靠一点.
    不知道这是不是也算能把版本给修改一下呢?改用HTTP_HOST来进行判断呢?

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部