xmlHttpRequest 和跨站限制
我可以绕过这个限制吗? 我知道我可以使用某种代理,但不确定该代理应该是什么样子?
还有其他建议吗?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个非常简单的教程: 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.
JSONP 正是用于此目的
这是 JSONP 实现的非常基本的示例。
服务器端代码 -
此方法映射到服务器上的 /GetFirstname URL。它从查询字符串中提取回调参数。并将生成的 resultJson 包装为 javascript 函数调用,其中函数名称是通过回调传递的参数。
在客户端,使用 jQuery - 实现就像这样简单。
这将传递函数名称
alert
作为服务器的回调。服务器将返回alert({"FirstName": "archil"})
。 jQuery 将自动检查此响应并执行它。结果,您将在浏览器中看到标准警报屏幕。主要思想是根据服务器的返回参数执行alert
。您可以将更具体的函数名称作为 jsonpCallback 传递,并根据请求的结果执行操作。我知道这里使用的 URL 模式更像是 RPC 风格的 Web 服务,而不是 REST 风格,但该示例是关于使用 JSONP,而不是关于 REST 架构
JSONP is exactly for that purpose
Here is the very very basic example of JSONP implementation.
The server side code -
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
This will pass function name
alert
as callback for server. Server will returnalert({"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 thatalert
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
您可以使用 $.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/
以下是创建此类代理的基本步骤。
让我们知道您使用的服务器端语言以获得更多技术帮助来实现上述内容。
Here are basic steps to create such proxy.
Let us know what server side language you're using for more technical help to implement the above.