我需要做跨域Ajax请求 - 这是我的代码
$.ajax(
{
url: redirectURL,
data: $('#login-container form').serialize() + querystring,
type: 'post',
cache: false,
dataType: 'jsonp',
jsonp: 'jsonp_callback',
});
Error: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://testsite/assets/scripts/jquery-1.3.2.js Line: 19"]
Source File: http://testsite/assets/scripts/jquery-1.3.2.js
Line: 19
我也检查了以下链接 -
Access to restricted URI denied code: 1012
$.ajax(
{
url: redirectURL+'?callback=?',
data: $('#login-container form').serialize() + querystring,
type: 'post',
cache: false,
dataType: 'html' });
我也在网址中尝试过Callback。 我已经在stackoverflow中看到了关于这个问题的所有链接..但是无法克服这个问题 任何人都可以请帮助,并告诉我如何克服! 感谢
答案 0 :(得分:30)
您将无法在浏览器中执行跨域POST请求。
如果您正在进行JSONP调用以访问跨域URL,则可以使用JQuery的getJSON方法。这将允许您仅发出GET请求。如果您可以使用GET参数将登录信息提交给redirectURL,则可以使其正常工作。
请注意,POST到远程登录表单可能是浏览器不允许这样的跨域请求的最佳示例。您不希望看起来像您的银行的网页能够从您银行的网站实际为您提供数据 - 这将成为非常有效的网上诱骗网页。
另一方面,如果你真的想解决这个问题,你可以编写一些服务器端代码,在给定输入参数的情况下,向redirectURL发出一个post请求并汇回响应。
请告诉我你没有写一个网页仿冒页面。
答案 1 :(得分:8)
一种方法是将您的服务器用作代理:
AJAX Request -> Your server -> Server of interest
AJAX Response Handler <- Your server <- Server of interest
答案 2 :(得分:3)
JSONP实际上不是Ajax,它不使用XMLHttpRequest
而是使用动态script
元素。 jQuery使这个透明,但JSONP仍然需要以下工作:
GET
,您无法使用POST
s callback
检查您请求的网址是否支持JSONP并将呼叫更改为HTTP GET
。
答案 3 :(得分:2)
如果您也控制远程服务器,在最近的浏览器(IE8,FF3.5)中,您可以克服跨域障碍:
IE's XDomainRequest method和the W3C's and Mozillas Origin-Header。
简而言之,如果您的服务器发回HTTP标头
Access-Control-Allow-Origin: *
使用AJAX响应,即使请求来自不同的域,IE和Mozilla也会接受它。您可以通过将*
替换为允许的域来缩小范围。
答案 4 :(得分:0)
“我需要做跨域Ajax请求”
你做不到, 除非:
答案 5 :(得分:0)
在wamp或apache等任何服务器上运行它......
它不会出错...
NS_ERROR_DOM_BAD_URI: Access to restricted URI