当前位置:   article > 正文

PHP 快速解决跨域问题_php跨域请求解决方案

php跨域请求解决方案

跨域介绍

浏览器拥有同源策略限制确保安全,同源策略会阻止一个域的Javascript脚本和另外一个域的内容进行交互。

当一个请求url的协议、域名(包括多级域名)、端口三者之间任意一个与当前页面url不同即为跨域。
 

跨域限制

1)无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

2)无法接触非同源网页的 DOM 节点

3)无法向非同源地址发送 AJAX 请求
 

跨域解决方案

1)JSONP(只支持GET请求)

Javascript:

  1. <script src="http://test.com/data.php?callback=dosomething"></script>
  2. // 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字
  3. // 处理服务器返回回调函数的数据
  4. <script type="text/javascript">
  5. function dosomething(res){
  6. // 处理获得的数据
  7. console.log(res.data)
  8. }
  9. </script>

data.php:

  1. header('Content-type: application/json');
  2. //获取回调函数名
  3. $jsoncallback = htmlspecialchars($_REQUEST ['callback']);
  4. //json数据
  5. $json_data = '["customername1","customername2"]';
  6. //输出jsonp格式的数据
  7. echo $jsoncallback . "(" . $json_data . ")";

2)CORS 跨域资源分享(Cross-Origin Resource Sharing)

1、普通跨域请求:只需服务器端设置 Access-Control-Allow-Origin

2、带cookie跨域请求:前后端都需要进行设置

PHP:

header("Access-Control-Allow-Origin:*");

或者 Nginx:

  1. location ~ .*\.php$
  2. {
  3. add_header 'Access-Control-Allow-Origin' '*'; # 就加这句就行
  4. include fcgi.conf;
  5. fastcgi_pass 127.0.0.1:10080;
  6. fastcgi_index index.php;
  7. expires off;
  8. }

Javascript:

  1. $.ajax({
  2. url: 'http://www.test.com:8080/login',
  3. type: 'get',
  4. data: {},
  5. xhrFields: {
  6. withCredentials: true // 前端设置是否带cookie
  7. },
  8. crossDomain: true, // 会让请求头中包含跨域的额外信息,但不会含cookie
  9. });

3)WebSocket 浏览器与服务器的全双工通信,同时也是跨域的一种解决方案

4)Nginx 反向代理

  1. server {
  2. # nginx监听所有 test.com:9000 端口收到的请求
  3. listen 9000;
  4. server_name test.com;
  5. # test.com:9000 会被转发到 192.168.25.20:9000
  6. location / {
  7. proxy_pass http://192.168.25.20:9000;
  8. }
  9. # test.com:9000/api/ 会被转发到 "192.168.25.20:9000/api/"
  10. location /api/ {
  11. proxy_pass http://192.168.25.20:9000;
  12. }
  13. }

摘自:什么是跨域?跨域解决方法_越努力,越幸运!-CSDN博客_跨域

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/515130
推荐阅读
相关标签
  

闽ICP备14008679号