ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – JSONP和XMLHttpRequest问题

2019-07-30 01:35:49  阅读:219  来源: 互联网

标签:javascript xmlhttprequest jsonp


我试图在浏览器(以及Javascript新手)中理解相同的原始策略,并且遇到了维基百科上的JSONP页面. How It Works部分说 –

Now, consider that it is possible to specify any URL, including a URL that returns JSON, as the src > attribute for a element. This means it is possible to retrieve JSON via a script element in > an HTML page.

However, a JSON document is not a JavaScript program. If it is to be evaluated by the browser in a element, the return value from the src URL must be executable JavaScript. In the JSONP usage pattern, the URL returns the dynamically-generated JSON, with a function call wrapped around it. This is the “padding” (or sometimes, “prefix”) of JSONP.

我的问题是 –

>那么XMLHTTPRequest()应该只返回javascript或html吗?它不能返回纯粹的json文档吗?
>我认为相同的源策略不适用于XMLHttpRequest()调用.为什么需要在DOM中注入一个标签来调用第三方服务器?这是所有网站的广告附加组件如何回家收集数据?
>最后,我根本不理解JSONP.有人可以向我解释或推荐一个更好的解释吗?

谢谢,

– P.

解决方法:

So is XMLHTTPRequest() supposed to return only javascript or html?

它可以返回你喜欢的任何文本(也许是二进制数据,但我从来没有看到过这样,所以我不会发誓)

Can it not return a pure json document?

它可以.

I thought the same origin policy does not apply to XMLHttpRequest() call.

相同的原产地政策绝对适用于XHR

Why is there a need to inject a tag into the DOM to make a call to a third party server?

通过从另一个来源加载脚本(带有嵌入数据)来绕过相同的原始策略.

这是因为您没有使用JavaScript读取远程资源.您正在执行一些带有嵌入数据的远程JavaScript.

At the end of it I did not understand JSONP at all. Can some one explain or refer me to a better explanation please?

JSON-P只是从另一个来源加载一些JavaScript. JavaScript包含单个函数调用(对于在添加< script>元素之前定义的函数)和单个参数(JS对象或数组文字).

标签:javascript,xmlhttprequest,jsonp
来源: https://codeday.me/bug/20190730/1577411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有