WebKit中的JS同源策略:数据在这里,但是如何访问它?

发布于 2024-10-16 20:33:25 字数 412 浏览 5 评论 0原文

我正在开发一个移动应用程序,并尝试在嵌入 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等待圉鍢 2024-10-23 20:33:25

JSONP 是带有 Padding 的 JSON,它将 URL(仅限 GET)作为

大多数远程 Web 服务(例如 Twitter)都支持“callback=”GET 参数。例如:

GET /my/jsonp/?callback=myFunction

响应应该是一个包含内容的“JavaScript”文件。

myFunction({"code": 200, "status": "OK"});

这就是 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:

GET /my/jsonp/?callback=myFunction

And response should be a 'JavaScript' file with contents.

myFunction({"code": 200, "status": "OK"});

That's JSONP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文