xmlHttpRequest 和跨站限制

发布于 2024-11-07 07:53:52 字数 64 浏览 0 评论 0原文

我可以绕过这个限制吗? 我知道我可以使用某种代理,但不确定该代理应该是什么样子?

还有其他建议吗?

Ho can i bypass this restriction?
I know i can use some kind of a proxy but not sure how this proxy should look like?

Any other suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(4

拥抱没勇气 2024-11-14 07:53:52

这是一个非常简单的教程: http://developer.yahoo.com/javascript/howto- proxy.html

基本上,您创建一个接受 xmlhttprequest 的服务,并且必须从外部域请求数据,然后返回结果。

Here is a pretty straightforward tutorial: http://developer.yahoo.com/javascript/howto-proxy.html

Basically, you make a service that takes an xmlhttprequest and have to request data from the external domain, and then return the result.

新人笑 2024-11-14 07:53:52

JSONP 正是用于此目的

JSONP 或“带填充的 JSON”是
对基础 JSON 数据的补充
格式,一种使用模式,允许
从服务器请求数据的页面
在不同的域中。作为解决方案
对于这个问题,JSONP 是一个
替代更新的方法
称为跨源资源共享。

这是 JSONP 实现的非常基本的示例。

服务器端代码 -

 public string GetFirstName()
        {
            string callback = Request.QueryString["callback"];
            string resultJson = "{\"FirstName\": \"archil\"}"; //should definitely be some more application specific data :)

            if (!string.IsNullOrEmpty(callback))
            {
                return string.Format("{0}({1})", callback, resultJson);
            }
            return resultJson;
        }

此方法映射到服务器上的 /GetFirstname URL。它从查询字符串中提取回调参数。并将生成的 resultJson 包装为 javascript 函数调用,其中函数名称是通过回调传递的参数。

在客户端,使用 jQuery - 实现就像这样简单。

$(function () {

        $.ajax('http://serverUrl/GetFirstName', {

            dataType: 'JSONP',

            jsonpCallback: 'alert'

        });

    });

这将传递函数名称 alert 作为服务器的回调。服务器将返回alert({"FirstName": "archil"})。 jQuery 将自动检查此响应并执行它。结果,您将在浏览器中看到标准警报屏幕。主要思想是根据服务器的返回参数执行alert。您可以将更具体的函数名称作为 jsonpCallback 传递,并根据请求的结果执行操作。

我知道这里使用的 URL 模式更像是 RPC 风格的 Web 服务,而不是 REST 风格,但该示例是关于使用 JSONP,而不是关于 REST 架构

JSONP is exactly for that purpose

JSONP or "JSON with padding" is a
complement to the base JSON data
format, a pattern of usage that allows
a page to request data from a server
in a different domain. As a solution
to this problem, JSONP is an
alternative to a more recent method
called Cross-Origin Resource Sharing.

Here is the very very basic example of JSONP implementation.

The server side code -

 public string GetFirstName()
        {
            string callback = Request.QueryString["callback"];
            string resultJson = "{\"FirstName\": \"archil\"}"; //should definitely be some more application specific data :)

            if (!string.IsNullOrEmpty(callback))
            {
                return string.Format("{0}({1})", callback, resultJson);
            }
            return resultJson;
        }

This method is mapped to /GetFirstname URL on server. It is extacting callback argument from query string. And wrapping generated resultJson as javascript function call where name of function is parameter passed with callback.

on the client side, using jQuery - implementation is as simple as

$(function () {

        $.ajax('http://serverUrl/GetFirstName', {

            dataType: 'JSONP',

            jsonpCallback: 'alert'

        });

    });

This will pass function name alert as callback for server. Server will return alert({"FirstName": "archil"}). jQuery will automatically inspect this response and execute it. As the result, you will get standart alert screen in browser. Main idea is that alert is executed will the server's return parameters. You could pass more specific function name as jsonpCallback and act on results of request.

I KNOW that the URL pattern used here is more like RPC style web service than REST style, but the example is about using JSONP, not about REST architecture

野の 2024-11-14 07:53:52

您可以使用 $.ajax() 调用。

它具有属性 crossdomain: 处理跨域请求。

http://api.jquery.com/jQuery.ajax/

用于使用jquery的跨域请求看看
http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/

You can use $.ajax() call.

This has property crossdomain: which handles the cross domain request.

http://api.jquery.com/jQuery.ajax/

For cross domain request using jquery have a look at the
http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/

小耗子 2024-11-14 07:53:52

以下是创建此类代理的基本步骤。

  • 创建服务器端页面(使用 PHP 或 ASP.NET 等服务器端语言,这并不重要)并调用它,例如“MyProxy.aspx”
  • 在服务器端代码中读取通过 URL 或作为 POST 数据发送的数据,并且将该数据作为 Web 请求(在 .NET 的情况下,PHP 和其他语言中肯定有等效的)发送到外部网站。
  • 解析外部网站发送的结果并发回给客户端。
  • 在客户端中,将 AJAX 请求发送到代理页面(例如 MyProxy.aspx),向其传递正确的数据,并处理响应。

让我们知道您使用的服务器端语言以获得更多技术帮助来实现上述内容。

Here are basic steps to create such proxy.

  • Create server side page (using server side language like PHP or ASP.NET it doesn't really matter) and call it for example "MyProxy.aspx"
  • In the server side code read the data sent either on URL or as POST data, and send that data as Web Request (in case of .NET, there's surely equivalent in PHP and other languages) to the external website.
  • Parse the result sent from the external website and send it back to the client.
  • In the client, send AJAX request to the proxy page (e.g. MyProxy.aspx) passing it the proper data, and handle the response.

Let us know what server side language you're using for more technical help to implement the above.

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