joh*_* Gu 2 asp.net-mvc json jsonp cors
从asp.net MVC的角度来看,有谁可以帮助我理解JSON,JSONP和CORS之间的差异?
mon*_*sur 12
JSON是一种数据格式,而JSON-P和CORS是用于对数据进行跨域请求的机制/协议.
JSON是一种表示数据的格式.它首先在JavaScript中定义,但已经发展成为API表示数据的事实上的方式.大多数语言都有用于解析JSON的库.您可以在此处了解有关此格式的更多信息:http://json.org/.这是一个示例JSON对象:
{
"key": "value"
}
Run Code Online (Sandbox Code Playgroud)
JSON-P是一种在JavaScript中加载数据的机制.它会绕过浏览器的同源策略,以便从另一个域加载数据.它通过script在页面上嵌入JavaScript 来实现.此脚本调用远程域,该域返回JavaScript函数中包含的数据.当此函数返回到浏览器时,它将被执行,这允许调用代码访问数据.
请注意,虽然名称中包含单词"JSON",但JSON-P不一定必须使用JSON.例如,它可以将字符串或任何其他有效的JavaScript数据类型返回给用户.
请注意,虽然JSON-P可以在每个浏览器中运行,但它可以解决浏览器的同源策略,并且它有一些限制.例如,它只能发出GET请求,并且调用者无权访问响应头.由于它是自定义的浏览器和JavaScript,JSON-P并不适合访问其他语言的数据,如服务器端Python.
您可以在此处了解有关JSON-P的更多信息:http://en.wikipedia.org/wiki/JSONP
CORS是用于进行跨域请求的标准化机制.它在大多数现代浏览器中都受支持.客户端使用标准的XmlHttpRequest对象发出CORS请求.收到请求后,服务器决定是否允许跨域请求.如果允许,服务器会发出允许将响应传递给客户端的特殊标头.
您可以在此处找到CORS规范:http://www.w3.org/TR/cors/ 您可以在此处了解有关如何使用CORS的更多信息:http://www.html5rocks.com/en/tutorials/cors/
所有这些技术都独立于ASP.NET MVC.如果您想使用这些技术,首先应该问自己"我是否需要跨域访问数据?" 如果答案是"是",那么您应该问"我需要支持哪些浏览器/平台?" 如果您的答案是"最现代的浏览器",那么您应该考虑实施CORS.否则你应该使用JSON-P
| 归档时间: |
|
| 查看次数: |
4406 次 |
| 最近记录: |