如何配置php如何解决跨域问题的问题

nginx配置设置解决跨域问题
在nginx.conf中配置
& add_header Access-Control-Allow-Origin
& add_header Access-Control-Allow-Headers
X-Requested-W
& add_header Access-Control-Allow-Methods
GET,POST,OPTIONS;
这样就可以实现GET,POST,OPTIONS的跨域请求的支持
也可以 add_header Access-Control-Allow-Origin http://
--指定允许的
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。jquery跨域访问解决方案(转) - 好記性不如爛博客! - ITeye技术网站
博客分类:
客户端“跨域访问”一直是一个头疼的问题,好在有jQuery帮忙,从jQuery-1.2以后跨域问题便迎刃而解。由于自己在项目中遇到跨域问题,借此机会对跨域问题来刨根问底,查阅了相关资料和自己的实践,算是解决了跨域问题。便记录下来,以供查阅。
&&&&&&& jQuery.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的。
&&&&&&& 真实案例:
&&&&&&& $.ajax({
async:false,
url: '/demo.do',
// 跨域URL
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsoncallback', //默认callback
data: mydata,
timeout: 5000,
beforeSend: function(){
//jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数
if(json.actionErrors.length!=0){
alert(json.actionErrors);
genDynamicContent(qsData,type,json);
complete: function(XMLHttpRequest, textStatus){
$.unblockUI({ fadeOut: 10 });
error: function(xhr){
//jsonp 方式此方法不被触发
//请求出错处理
alert("请求出错(请检查相关度网络状况.)");
$.getJSON(" /demo.do?name1="+value1+"&callback=?",
function(json){
if(json.属性名==值){
// 执行代码
&&& 这种方式其实是上例$.ajax({..}) api的一种高级封装,有些$.ajax api底层的参数就被封装而不可见了。
&&& 在服务端通过callback= request.getParameter("jsoncallback") 得到jQuery端随后要回调的jsonp
&&& 然后返回类似:"jsonp("+要返回的json数组+")";
&&& jquery就会通过回调方法动态加载调用这个:jsonp(json数组);
&&& 这样就达到了跨域数据交换的目的.
&&& jsonp的最基本的原理是:动态添加一个是一致的(qq空间就是大量采用这种方式来实现跨域数据交换的) 。JSONP是一种脚本注入(Script Injection)行为,所以也有一定的安全隐患。
&&& 注意:jquey是不支持post方式跨域的。
&&& 这是因为虽然采用post +动态生成iframe是可以达到post跨域的目的(有位js牛人就是这样把jquery1.2.5 打patch的),但这样做是一个比较极端的方式,不建议采用。也可以说get方式的跨域是合法的,post方式从安全角度上被认为是不合法的,万不得已还是不要post,client端跨域访问的需求看来也引起w3c的注意了,看资料说html5 WebSocket标准支持跨域的数据交换,应该也是一个将来可选的跨域数据交换的解决方案。
浏览 14908
浏览: 99542 次
来自: 珠海
Exception in thread &main& ...
ie6下怎么不行呢,仍然给出提示
这个解决了困扰了我一下午的问题啊,之前我还一直是在另外一个方向 ...跨域访问的解决方案(HTML 5的方法:postMessage) - HTML 5教程 - 编程入门网
跨域访问的解决方案(HTML 5的方法:postMessage)
关于跨域访问,使用JSONP的方法,我前面已经demo过了,具体见http://supercharles888./886,HTML5提供了一个非常强大的API,叫postMessage,它其实就是以前iframe的进化版本,使用起来极其方便,这里举个实验例子:
我们依旧按照与上文相同的设定,假定我们有2个Domain
Domain1: http://localhost:8080 &它上面有个应用叫HTMLDomain1,并且有个页面叫sender.html。
Domain2:http://localhost:8180 它上面有个应用叫HTMLDomain2,并且有个页面叫receiver.html。
我现在的需求是,假定Domain1上我们有个json数据,我们想让Domain2应用中的javascript要可以操作这个json 数据(注意,这里已经是跨域了,因为Domain2上的js操作了Domain1上的数据),应该怎么办呢?
解决方案就是用HTML5的postMessage方法
Domain2的代码:
首先,我们在Domain2上创建一个HTML页面,这个页面没什么内容,就一行文字会来标识它是Domain 2,它下方将来会被js用来填充从Domain1弄过来的数据。
&!DOCTYPE html&
&meta charset=&UTF-8&&
&title&Domain2上的接收者页面receiver.html&/title&
&script type=&text/javascript& src=&js/receiveInfo.js&&&/script&
&body onload=&receiveInfoFromAnotherDomain();&&
&p&这个页面是HTML5跨域访问的Domain2上的页面receiver.html,它会处理来自Domain1上sender.html发送的页面&/p&
Domain2页面加载时候,它会调用receiveInfoFromAnotherDomain()函数,这个函数首先定义了一个事件监听函数,它只接受来自Domain1(http://localhost:8080)的事件,否则就忽略掉,然后它从这个事件中分离出信息负载,也就是json 数据,然后显示在页面底部:
//这个函数用于处理从Domain1上的sender发送过来的信息,然后将他们打印出来
function receiveInfoFromAnotherDomain(){
console.log(&entering method receiveInfoFromAnotherDomain()&);
//首先让window添加一个事件监听函数,表明它可以监听窗口对象的message事件
//它受到事件时,会先判断是否来自指定的Domain(不是所有Domain丢过来的事件它都处理的)
window.addEventListener(&message&,function(ev){
console.log(&the receiver callback func has been invoked&);
//如果不是来自指定Domain的,则忽略
if(ev.origin !=&http://localhost:8080&){
console.log(&the event doesn't come from Domain1!&);
//现在可以处理数据了
//控制台打印出接收到的json数据,因为我们把json字符串发送了过来
console.log(ev.data);
//将json字符串转为json对象,然后从中分离出原始信息
var personInfoJSON = JSON.parse(ev.data);
var name = personInfoJSON.
var title = personInfoJSON.
var info = ;
//构造信息文本并且显示在页面的底部
var personInfoString=&从域为: &+ev.origin+&那里传来的数据.&+&&br&&;
personInfoString+=&姓名是: &+name+&&br&&;
personInfoString+=&头衔为:
&+title+&&br&&;
personInfoString+=&信息为:
&+info+&&br&&;
document.body.innerHTML=personInfoS}

我要回帖

更多关于 ajax如何解决跨域问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信