一、首先了解一下同源策略
浏览器给的发送请求的限制 当发送方地址和接受放地址、传输协议、域名、端口号有任意一个不一样就是触发了同源策略

通俗点来说:
浏览器给发送请求的限制
你可以发送请求
你只能向自己家的服务器 发送请求
你不能向别人家的服务器发送请求
那么什么叫做别人家的服务器?
当 传输协议 或者 域名 或者 端口号 有任意一个不一样的时候,浏览器就会认为你在请求别人家的服务器
他就不让你请求, 告诉你触发了 同源策略
我们叫触发了同源策略的请求叫做跨域请求
二、介绍跨域请求的三种解决办法
1. jsonp
script 标签会把请求回来的所有内容当作 js 代码来执行 script 标签的 src 属性不受同源策略的影响 通过以上两个特点我们使用 script 标签的 src 属性请求一个跨域地址 对应的后端只要返回一段可执行代码。
例如:可直接在src中输入地址进行访问
<script src="http://127.0.0.1/server/jsonp.php"></script>
它的缺点:
1它只支持GET请求而不支持POST等其它类型的HTTP请求。
2它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。
3 jsonp在调用失败的时候不会返回各种HTTP状态码。
4安全性比较差。
2. cors
跨域是因为浏览器不让请求别人家的服务器
如果别人家的服务器告诉浏览器, 我允许这个域名请求我
浏览器就管不着了, 就可以正常请求了

上面三行代码一写, 那么就等于这个服务器开启了跨域资源共享。
3. 代理(服务器代理)
代理跨域(服务器正向代理跨域)
因为浏览器不允许你请求一个非同源的地址,所以我们需要借助代理服务器来获取

1、 具体步骤:
在浏览器同源设置一个 代理服务器
把本该发送给目标服务器的请求发送给 代理服务器
由 代理服务器 转发请求给 目标服务器
目标服务器把响应返回给 代理服务器
代理服务器 在把响应给到 浏览器
2、怎么进行代理配置(以phpstudy为例)
打开 phpstudy 窗口
点击切换版本
点击 php5.4.xxx + nginx

切换完成会出现Nginx
2. 打开 phpstudy 窗口
点击其他选项菜单
点击打开配置文件
点击 nginx-conf(config)
大概在 56 行左右有一个 server
顺着开始括号找到 server 的闭合大括号
在这个闭合大括号的上面一行书写代理配置

代理配置的写法:
location = /xx {
proxy_pass http://127.0.0.1/server/proxy.php;
}
注意:/之前必须要有空格;xx是代理标识符,自定义的;{} 里面的那个地址, 就是你要跨域请求的地址(目标服务器的地址); 最后的分号必须有;修改完毕以后, 一定要重启服务器。当你切换到 nginx 服务器不管是 html 文件还是 php 文件, 都不能用中文了,只要是中文就报错了。
本文介绍了浏览器的同源策略及其限制,接着详细讲解了跨域请求的三种解决方案:JSONP、CORS和服务器代理(正向代理)。JSONP只支持GET请求,安全性较低;CORS需要目标服务器配合设置允许跨域;服务器代理则是通过设置代理服务器转发请求,避免同源策略限制。
835

被折叠的 条评论
为什么被折叠?



