码迷,mamicode.com
首页 > 编程语言 > 详细

javascript跨域的解决方案

时间:2016-11-30 11:36:57      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:request   html   端口号   script   前端   相互   之间   功能   pre   

首先我们得了解什么是跨域

我们来回顾一下一个域名地址的组成:

http://  www   abc.com  :8080   /script/jquery.js

协议      子域名  主域名      端口号   请求资源地址

当协议、子域名、主域名、端口号不同时,都算作不同域

不同域之间相互请求资源,就算做“跨域”

比如:http://www.abc.com/index.html 请求http://www.efg.com/server.php就算做跨域请求

 

跨域

JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。现在我们回到什么是跨域呢,简单的理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.com下的对象

 

处理跨域的方法 一、代理

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

a服务器

b服务器

我们可以在a服务器的后台来调用b服务器的服务,然后再把响应结果返回给a的前端,这样前端调用a同域名的服务就和调用b的服务效果相同了

 

处理跨域方法 二、JSOP

在ajax当中的  dataType当中 改成jsonp

加上一个属性  jsonp:“”  可以取任意一个值

后端代码的改造  在get请求处理中  获取到 jsonp里的内容  $jsonp = $_GET["jsonp"] 里面的值是参数的名称

要在json数据当中加上一个括号

原json数据$result=‘{"name":"k.luo"}‘

改造后返回数据:$result=$jsonp.‘({"name":"k.luo"})‘   php语言

 

但是实现跨域知识实现了get请求的改造、jsonp只能对get请求取得效果,jsonp不支持post请求的

 

处理跨域方法 三、XHR2

HTML为我们提供了XMLHttpRequest Level2 已经实现了跨域访问以及其他的一些新的功能

IE10以下的版本都不支持

在服务器端加入头文件

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

header("Access-Control-Allow-Methods:POST,GET"); 请求方式

javascript跨域的解决方案

标签:request   html   端口号   script   前端   相互   之间   功能   pre   

原文地址:http://www.cnblogs.com/luokai/p/6116862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!