WebKit中的JS同源策略:数据在这里,但是如何访问它?
我正在开发一个移动应用程序,并尝试在嵌入 WebView 中的 HTML/CSS/JS 中完成大部分部分。 该应用程序需要从 XML Web 服务获取数据,而 HTML/CSS/JS 代码应该位于本地文件系统上。然而,这让我陷入了 Ajax 调用的“同源策略”问题,因为 WebKit 将本地文件的 Origin 设置为 null。 但是我注意到,当在 $.ajax 参数中将 dataType 设置为“jsonp”而不是“xml”时,调用将在 Chrome 中失败(parserError),但我可以在调试器中看到从 Web 服务返回的数据。我的问题是:是否可以以某种方式覆盖收到响应数据时调用的默认回调? 如果没有,我还能做什么?我无权访问运行网络服务的服务器。 在有关此问题的其他线程中,我读到在页面加载时而不是在 Ajax 调用时执行请求。然而我不清楚这意味着什么/如何完成。 我很感激对此的任何启发!
I'm developing a mobile app and try to do most parts in HTML/CSS/JS embedded in a WebView.
The app needs to get data from a XML-webservice while the HTML/CSS/JS-code is supposed to be on the local filesystem. However that gets me into the "same-origin-policy"-issue for Ajax-calls, because WebKit sets the Origin to null for local files.
However I noticed that when setting dataType to "jsonp" instead of "xml" in $.ajax params, the call will fail in Chrome (parserError), but I can see the data returned from the webservice in the Debugger. My question is: is it possible to somehow override the default callbacks invoked when the response data is received?
If not, what else can I do? I don't have access to the server running the webservice.
In other threads about this issue I've read that doing the request on page load instead of as Ajax call works. However it's not clear to me what that means / how that's to be done.
I appreciate any illumination on this!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JSONP 是带有 Padding 的 JSON,它将 URL(仅限 GET)作为
标签加载,并假设 JSONP 响应包含以实际 JSON 作为第一个参数的函数调用。
大多数远程 Web 服务(例如 Twitter)都支持“callback=”GET 参数。例如:
响应应该是一个包含内容的“JavaScript”文件。
这就是 JSONP。
JSONP is JSON with Padding, it loads the URL (GET only) as a
<script>
tag, and assumes that the JSONP response contains a function call with the actual JSON as the first argument.Most remote webservices, like Twitter, support a 'callback=' GET parameter. For example:
And response should be a 'JavaScript' file with contents.
That's JSONP.