博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理跨域的方式
阅读量:5245 次
发布时间:2019-06-14

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

  JavaScript出于安全方面的考虑,不予许跨域调用其他页面的对象,即JavaScript同源策略的限制

一、代理

  在同域名的web服务器端创建一个代理。

  什么是代理?举例:

    a服务器(域名:www.a.com)(非跨域)

    b服务器(域名:www.b.com)(跨域)

  调用跨域的服务 www.b.com/service.php 时,在a服务器上创建一个服务 www.a.com/proxy-bservice.php,由这个服务从后端去访问 www.b.com/service.php 服务,将响应值获取过来,返回给前端。

  在这里,www.a.com 做了一个代理,前端只需要访问 www.a.com/proxy-bservice.php 就相当于访问 www.b.com/service.php

  服务代理属于后端技术,具体实现就厚脸皮的交给后台的大大们了。

二、JSONP

  JSONP一般用于解决主流浏览器GET请求的跨域数据访问问题。原理:

  在 www.a.com 页面中:

    <script>

      function jsonp (json) {

        console.log(json['name']);

      }

    </script>

    <script src="http://www.b.com/jsonp.js"></script>

  在 www.b.com 页面中:

    jsonp({'name': '666', 'age': '23'});

  这里是用了<script>标签的src属性,这个属性不存在跨域问题。但是!!!jsonp不支持POST请求。

三、XHR2

  HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能,但是IE10以下版本都不支持。

  使用XHR2跨域,客户端不需要改造,只需在服务器端做一些小改造即可:

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

    header('Access-Control-Allow-Methods:POST,GET');

转载于:https://www.cnblogs.com/mz1680/p/5813984.html

你可能感兴趣的文章
Lombok插件
查看>>
Linux上安装Libssh2
查看>>
自定义EL函数
查看>>
stm32的电源
查看>>
splice的多种用法
查看>>
20162304 2017-2018-1 《程序设计与数据结构》第二周学习总结
查看>>
九.python面向对象(双下方法内置方法)
查看>>
2018-09-12
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
CSS与Theme的作用——Asp.Net
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
20165115 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
WPF自定义集合控件概述与遇到的问题
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
pytest的参数化测试
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
docker运行环境安装-centos(一)
查看>>