跨域

JQUERY跨域

不羁的心 提交于 2021-02-18 03:12:49
用jsonp跨域 客户端JQuery.ajax的调用代码示例: $.ajax({ type : "get", async:false, url : "http://www.xxx.com/ajax.do", dataType : "jsonp", jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数 jsonpCallback:"success_jsonpCallback",//callback的function名称 success : function(json){ alert(json); alert(json[0].name); }, error:function(){ alert('fail'); } }); 服务端返回数据的示例代码: public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; String callbackFunName = context.Request["callbackparam"]; context.Response.Write(callbackFunName + "([ { name:\"John\"}])"); } 用 JS创建动态脚本跨域

CDNbest-设置跨域

断了今生、忘了曾经 提交于 2020-03-29 18:42:50
写在开始之前 我想大家都“跨域”并不陌生 有时候根据业务需要是需要开启跨域 至于不晓得跨域是什么的,请度娘下,科普下 方式一 1、找到需要做跨域的域名对应的节点ip,登录ip的3311端口 2、在新窗口中找到左侧的回应控制->插入 3、如图 参数: Access-Control-Allow-Origin * add_header Access-Control-Allow-Methods GET,POST,OPTIONS add_header Access-Control-Allow-Headers DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization 方式二 在区域设置下添加以下代码 <!--#start 200 --> <config> <response action='allow' > <table name='BEGIN'> <chain action='continue' > <mark_add_header or='1' attr='Access-Control-Allow-Origin' val='*'></mark_add_header> <mark_add_header or='1'

通过共享文件夹来进行前后端独立开发

只谈情不闲聊 提交于 2020-03-21 03:21:33
3 月,跳不动了?>>> 最近在快速开发一个后台系统,前端使用了bootstrap和angular搭建,后端使用Java,由于前端采用的是单页富应用的Web App的构建方式,所以不适合做JSP页面,最后采用了【前端+ajax+后台】的前后端独立开发模式。 但这种开发模式,最大的问题是,ajax调用的跨域问题。跨域将带来很多问题,一方面服务器和浏览器不允许跨域调用,另一方面就算服务器端设置了可跨域调用,每一次跨域的ajax调用都会产生一个新的SESSIONID,无法保存会话状态。 所以,前端后独立开发最关键问题是解决跨域ajax调用后台接口的问题。这里主要分为两类处理方式: 一类:坚持跨域调用,采取跨域解决方法。详情可参考 JavaScript多种跨域方式 一类:把跨域改为同域,这时调用接口将没有任何压力 本文介绍的是采取第二种方式——把跨域改为同域! ##具体操作步骤 前后端独立开发,分别对应两台电脑,连接着相同的局域网。 在后端建立一个共享文件夹,然后在JSP工程里设置该目录对应一个开发的URL,比如: http://10.0.0.116:8040/jobnow-managementsite/ 。 然后前端把前端文件放到该目录下,打开浏览器,访问 http://10.0.0.116:8040/jobnow-managementsite/index.html 即可进行开发!

使用chrome扩展程序及jsonp实现跨域访问

半世苍凉 提交于 2020-03-09 22:55:51
作为跨域访问,很多人都知道,由于同源策略(所谓同源,即域名、协议、端口相同),造成js不能操作非同源的web页面的内容,随着前端的不断发展,使用的不断深入,这也产生了很多的不便。下面,我将通过两种方式进行跨域访问: 1、通过chrome扩展程序: 对于使用chrome浏览器的用户,可以通过此方式方便的进行跨域访问,而且不需要进行后台数据的操作,只需在前端就能进行跨域访问且取得里面你想要的内容,例如当想要取得 http://files.qidian.com/Author6/2877557/46513147.txt 里面内容的时候,就可以使用此方法方便取得。 在这之前,首先得对chrome扩展程序进行简单的配置,从而产生一个属于自己的chrome扩展程序。下面一个简洁步骤: 首先,在桌面,也可以在你任何磁盘里新建一个文件夹,而我则建了个名chrome文件夹,里面最重要的是包含一个manifest.json的文件,详细信息可参阅 http://docs.lmk123.com/getstarted.html ; manifest.json文件内容如下: 其中最重要的是permissions中“http://*/*”,其代表能够运行的网址范围,还有就是content_scripts中的js,其表示需要使用的js文件。 在myOwn.js中代码为:$.get(" http://files

JFinal跨域方法的两种实现

◇◆丶佛笑我妖孽 提交于 2020-03-08 17:15:47
在项目中需要通过ajax方法远程调用其它JFinal服务器的服务,会报出No 'Access-Control-Allow-Origin' header is present on the requested resource错误。浏览器默认不允许跨域 。这里提供两种方法。 正常调用如下: 客户端 $.ajax({ type : "post", url : "http://192.168.0.5/order", data : data, dataType : "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", async: false, cache: false, success:function(response){ //扩展回调函数 if( callback != null ){ callback(response); } }, error : function() { alert("服务器发生错误"); } }); 服务端 public class OrderController extends Controller { private static Logger log = Logger.getLogger(OrderController.class); public void

IE 中跨域访问session失效问题

隐身守侯 提交于 2020-03-02 18:50:16
问题描述: 情形一:有服务器A与B(A、B服务器不在同一域中),服务器A中的页面包含有iframe,需要加载B服务器中的数据(需要登录验证后的)。验证信息从iframe的src属性中传递给服务器B,当服务器B收到请求后,先写session,然后再继续此次请求。当iframe中页面加载完成后,页面中有其它请求发到服务器B(这些请求都是需要验证通过后,才能继续)。iframe中的请求发送到服务器B时,没有session,导致请求失败。 情形二: 有服务器A与B (A、B服务器不在同一域中) ,服务器A中的页面先发起验证,再进入其它请求; 解决办法: 服务器B的返回中加入: response.setHeader("P3P","CP=CAO PSA OUR") 问题原因: cookie与session跨域登陆代码(ie6,ie7,firefox)frameset里面,也就是里面的frame是来自第三方站点(不同ip或不同域名),那么默认情况下ie会自动禁用这些站点的cookie,也就是在请求某url时在http header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。 但像ie 6.0和ie 7.0有个自己的标准.要支持p3p,ie 6的缺省隐私等级设置为"中"——即

iframe跨域session丢失问题

对着背影说爱祢 提交于 2020-03-02 18:40:16
在做项目的时候,碰到一个很棘手的问题。在一个应用中通过iframe的方式嵌入另一web应用,但是session中明明放了值,但是就是死活获取不到。几经周折,终于皇天不负有心人,总算找到了关键命脉所在。 最近在做一个系统(A),需要在系统(A)中集成目前现存系统(B)的功能。 当然,系统(B)功能在访问时做了登陆限制。(一般性都是:系统登陆后把userId放入session中,在具体的功能页面加入session中userId的判断, 如果session中userId不存在,则跳到登陆页,否则继续加载并正常显示功能。) 那么,在系统(A)中要访问系统(B)的功能无非是要绕过系统(B)的登陆。(一般的做法是先跳转到系统(B)中的一个页面,在这个页面里将userId塞入session中, 再自动跳转到实际要访问的功能页面) 以上做法,在不使用框架结构时,是可行的,确切的说是很简单的。 但是如果,系统(A)使用了框架结构,即系统(B)中的功能页面要嵌入到系统(A)的框架中,则会出现一些意想不到的问题, 确切说是系统(B)跳转到了登陆页面,session丢失了。 为什么会这样呢? 因为应用需求在一个页面的不同frame下面访问不同的域,结果造成了session丢失。 问题根源: IE6/IE7支持的P3P(Platform for Privacy Preferences Project

如何在chrome中禁用相同来源的方法

╄→尐↘猪︶ㄣ 提交于 2020-02-29 10:01:29
在过去的一周,我一直在做一些浏览器的扩展开发,你可能会或者可能不知道,Chrome扩展允许跨域ajax调用.这是允许的,因为chrome扩展权限模型需要用户在安装扩展时同意安装程序可能会访问您的数据域的问题. 然而,在默认情况下,扩展只有在安装后和激活(意思是点击工具栏上扩展的图标)时才有用. 如果你正在开发一个扩展,这意味着你必须不断刷新扩展然后点击按钮以测试你的XHR请求. 事实证明,你可以启动拥有两个标记的Chrome,它将允许你轻松地浏览到您的文件直接和执行跨域调用XMLHttpRequest. 为了快捷方便,我在桌面上创建了一个增加了标记组件的快捷方式.你的快捷方式看起来应该像这样: C:\Users\YOUR_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files --disable-web-security 标记 你会注意到这两个标记加入了快捷方式的路径里. –allow-file-access-from-files –disable-web-security 这些标记都将允许开发人员测试跨域ajax请求的本地文件. PS:我称这个为"无担保的Chrome",所以我不会冒险总是运行带有这些标记的Chrome. 译者注

font-face跨域办法

二次信任 提交于 2020-02-29 08:08:41
font-face跨域办法 font-face是现在比较流行的技术,可以矢量化你的图标,更改颜色方便等等。如果你想更进一步了解他,请点击这里( CSS3 icon font完全指南 ) 今晚有网友问到font-face跨域在nginx下如何配置,印象中一淘UX有文章介绍办法,但打开文章里面相应的链接后发现没内容。 搜了一下其他地方,大多数给出的都是一样的链接。 所以在这里补充一下内容: 原因: Firefox对字体文件有加载限制,也就是说不允许你随便加载别人的字体,防止他人盗用字体。 解决办法: 1、把字体文件放在你网站根目录下。 2、给字体文件的http头里面添加Access-Control-Allow-Origin属性,以控制指定域引用你的字体文件。 nginx: server { ... # Fix @font-face cross-domain restriction in Firefox location ~* \.(ttf|ttc|otf|eot|woff|font.css)$ { add_header Access-Control-Allow-Origin "http://yoursite.com"; } ... } apache: <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$"> <IfModule mod

Chrome下的iframe高度自适应问题

这一生的挚爱 提交于 2020-01-26 00:04:24
萌新最近在写点东西练手,就碰到了这个问题。 这是我的iframe: <iframe frameborder="0" id="myiframe" name="contentIframe" class="mainContent" src="WebLearning/1.html" scrolling="no" onload="this.height=this.contentWindow.document.body.scrollHeight"></iframe> 照道理说,onload里的内容应该解决了iframe的高度随内容自适应的问题,可在Chrome里打开网页时,却不起作用。F12打开开发者模式,看下控制台消息后,发现这样一个报错: “Blocked a frame with origin ‘null’ from accessing a cross-origin frame”.这是什么奇怪的东西?百度以后才知道,这个“cross origin”是一个叫跨域的东西。 简单来说,跨域是一个安全限制,它组织我的网站执行其他网站的脚本。在我的这个例子中,iframe的目标指向的是我的文件夹里的某个网页,那Url自然就是以file:///开头的了,这在Chrome看来是属于“跨域”的一种。怎么办呢? 话不多说,解决方法的链接 就在这 。 另外我发现,这个问题在FireFox中同样存在