博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 跨域资源共享 CORS 设定
阅读量:4510 次
发布时间:2019-06-08

本文共 1251 字,大约阅读时间需要 4 分钟。

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

它允许浏览器向跨源服务器,发出请求,从而克服了AJAX只能使用的限制。

详细介绍见: 

NGINX端:

   location / {

       ... 
    add_header 'Access-Control-Allow-Origin' *;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin,Range';
    add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
       ...

  }

或者 在 PHP代码中设定 (php代码中设置了, nginx就不要配置了, 二选一):

 

服务重启后, 至此 web端可直接 JavaScript 访问该站点的资源, ajax 亦可。

 

 

特别说明:

     非同源的请求,会额外产生一次 "预检"的请求 请求方法 : OPTIONS

OPTIONS /cors HTTP/1.1Origin: http://api.bob.comAccess-Control-Request-Method: PUTAccess-Control-Request-Headers: X-Custom-HeaderHost: api.alice.comAccept-Language: en-USConnection: keep-aliveUser-Agent: Mozilla/5.0...

  

"预检"请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin,表示请求来自哪个源。

除了Origin字段,"预检"请求的头信息包括两个特殊字段。

(1)Access-Control-Request-Method

该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法,上例是PUT

(2)Access-Control-Request-Headers

该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段,上例是X-Custom-Header

服务器收到"预检"请求以后,检查了OriginAccess-Control-Request-MethodAccess-Control-Request-Headers字段以后,确认允许跨源请求,就可以做出回应。

 

这个环节,由浏览器控制,用户无感知。

 

转载于:https://www.cnblogs.com/taozi32/p/10417287.html

你可能感兴趣的文章
【转】CSS Nuggest
查看>>
为什么开发人员工作10多年了还会迷茫?没有安全感
查看>>
在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因...
查看>>
个人github链接及git学习心得总结
查看>>
c++ 计算器 带括号 代码实现
查看>>
objective -c初写
查看>>
C#中如何设置窗体的默认按钮和取消按钮
查看>>
[Swift]LeetCode276. 粉刷栅栏 $ Paint Fence
查看>>
[Swift]LeetCode351. 安卓解锁模式 $ Android Unlock Patterns
查看>>
break语句和continue语句
查看>>
python学习笔记(xlwt/xlrd下载安装)
查看>>
java代码中添加log4j日志
查看>>
Java学习不走弯路教程(19 对于Service的自动注入)
查看>>
[CSS3] :empty Selector
查看>>
webpack4 入门(二)
查看>>
LoadRunner基本简介
查看>>
编写一个模拟注册用户和验证用户登陆的程序
查看>>
jquery 左侧多级菜单 根据xml文件自动生成
查看>>
JS - CommonJS、AMD、CMD
查看>>
Ajax笔记(一)
查看>>