相关疑难解决方法(0)

如何取消HTTP fetch()请求?

有一个用于从JavaScript发出请求的新API:fetch().是否有任何内置机制可以在飞行中取消这些请求?

javascript ajax fetch-api

168
推荐指数
5
解决办法
7万
查看次数

jQuery和AJAX响应头

所以我有这个jQuery AJAX调用,响应来自服务器的302重定向形式.我想采用这种重定向并将其加载到iframe中,但是当我尝试使用javascript警报查看标题信息时,即使firebug正确地看到它,它也会出现空值.

这是代码,如果它有帮助:

$j.ajax({
    type: 'POST',
    url:'url.do',
    data: formData,
    complete: function(resp){
        alert(resp.getAllResponseHeaders());
    }
});
Run Code Online (Sandbox Code Playgroud)

我真的无法访问服务器端的东西,以便将URL移动到响应主体,我知道这将是最简单的解决方案,因此任何有关解析标头的帮助都会非常棒.

ajax jquery redirect header http-status-code-302

153
推荐指数
7
解决办法
30万
查看次数

如何防止ajax请求使用jQuery跟踪重定向

我使用jQuery ajax函数来访问Web服务,但是服务器不是返回带有描述问题的状态代码的响应,而是将请求重定向到具有200头的页面,描述问题.我无法对此进行任何更改,因此我需要以某种方式在客户端上解决它.

示例:请求转到某个找不到的URL,因此我收到302重定向到另一个位置.发送一个新请求,我收到200 OK,从而防止错误回调触发.

有什么方法可以阻止ajax请求跟随重定向,而是调用回调,最好是错误方法.或者,是否可以检测客户端中是否发生了重定向?

javascript jquery

100
推荐指数
4
解决办法
8万
查看次数

Spring MVC @RestController和redirect

我有一个用Spring MVC @RestController实现的REST端点.有时,取决于我的控制器中的输入参数我需要在客户端上发送http重定向.

有没有可能使用Spring MVC @RestController,如果可以的话,请你举个例子吗?

rest redirect spring spring-mvc http-redirect

58
推荐指数
4
解决办法
6万
查看次数

在angularjs中处理来自代理的HTTP 302响应

我有一个反向代理,检查几个应用程序的全局身份验证.当用户断开连接但仍尝试使用我的应用程序时,代理会发送302响应:

HTTP/1.1 302 Found
Date: Wed, 11 Sep 2013 09:05:34 GMT
Cache-Control: no-store
Location: https://other.url.com/globalLoginPage.html
Content-Length: 561
Content-Type: text/html; charset=iso-8859-1
Via: 1.1 my-proxy.com
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)

在angularJs中,调用错误回调,但响应头为空,状态为0,数据为空字符串.所以似乎我真的无法处理响应...
我已经看到了关于这个主题的几个问题,我仍然不明白发生了什么(CORS因为代理或不同的域名location?,302浏览器行为?).
特别是这部分来自答案(/sf/answers/1253241321/):

注意:如果您的服务器设置响应代码301或302,您将无法获取Location标头,因为XMLHttpRequest对象将自动且透明地跟随它.

这个XMLHttpRequest对象怎么样?
在一个非常旧版本的Chrome(不能使用更新的版本)中,我可以在网络面板中看到相应的请求,但由于没有响应,它似乎失败了.
在最新版本的Firefox中,没有任何进展.

我可以做任何事情,因为我无法更改代理配置和响应吗?

更新:
我今天重播了我的场景,并且由于更新版本的firebug,我能够获得有关正在发生的事情的更多细节.
在我的问题中,我离anwser不远:跨域策略.
由于它是我的应用程序发出的HTTP请求,因此浏览器拒绝以下XMLHttpRequest(该应用程序看起来像是同一个请求).因此错误和空响应.
所以我认为我无能为力

http-status-code-302 angularjs

35
推荐指数
2
解决办法
6万
查看次数

是否有可能XHR HEAD请求不遵循重定向(301 302)

是否可以发送xhr HTTP HEAD请求以仅获取第一个请求的标头响应,而不是像重定向那样自动跟随301,302?我只对获取网址的新位置感兴趣.例:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(data) {
    if (xhr.readyState == 4) {
        if (xhr.status == 301 || xhr.status == 302) {
            // Get new location url don't GET it
        }
    }
};
xhr.open('HEAD', url, true);
xhr.send();
Run Code Online (Sandbox Code Playgroud)

http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-method似乎指定的请求应遵循,是有没有办法制止?

javascript ajax google-chrome xmlhttprequest

23
推荐指数
2
解决办法
1万
查看次数

当$ .ajax的响应为301时,我可以通过编程方式获取新的URL吗?

当对xhr请求的响应是301时,有没有办法获取最终重定向到的URL?

我的网站包含来自旧版本的大量遗留网址,这些网址会返回301对正确新网址的回复.

出于实用目的,我希望能够向旧URL发出请求,并能够检索新的URL,即发送请求到"/oldpage.aspx?foo=someParam",获取新的URL"/ arbitaryNewPageName/someParam".

我在firebug控制台中一直在玩这个:

    $.ajax({
            url: "/oldpage.aspx?foo=someParam", 
            success: function(response, status, jqxhr){
            //poking around, trying to get the new URL, "/arbitraryNewPage/someParam"
                console.log(jqxhr.getAllResponseHeaders());
                console.log(jqxhr);
            },
            beforeSend: function(jqxhr, settings){
                console.log(jqxhr);
                console.log(settings);
            }
        });
Run Code Online (Sandbox Code Playgroud)

我可以在firebug中看到,当这段代码运行时,它会对"/oldpage.aspx?foo=someParam"执行一次GET,并获得301响应,然后获得另一个GET到"/ arbitaryNewPageName/someParam".

对于第一个请求,我在响应标头的Location值中看到重定向的URL.不幸的是,第二个请求是传递给$ .ajax.success函数的内容,它只在请求头的Referrer值中有重定向的URL.

是否有可能拦截对第一个响应的响应,或者可能会看到第二个请求的请求标头?

编辑:感谢大家的回复.我想我需要提供一些背景来澄清我到底在寻找什么.

业务用户要求我创建一个将旧URL与新URL相关联的列表.由于我已经实现了将旧URL重定向到服务器上的新URL的方法,因此我希望能够减少这项工作,并创建一个脚本,将请求放置到旧URL并获取请求被重定向到的URL.像这样的东西:

for (var i = 0; i < arrayOfLegacyUrls.length; i++)
{
    $.ajax({
            url: arrayOfLegacyUrls[i], 
            success: function(response, status, jqxhr){
                var newUrl = "???"; //do magic to get URL that request was redirected to

                writeToFileForBusinessUser(arrayOfLegacyUrls[i], newUrl);
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

我的问题的关键在于:我可以从XHR获取我的请求被重定向到的URL吗?到目前为止,答案似乎是"不".

javascript jquery xmlhttprequest jqxhr

14
推荐指数
1
解决办法
7039
查看次数

302响应错误

我正在向我的本地Web服务发出GET请求,我希望返回302响应,并在标题中包含一个位置.但是,我得到一个未定义的响应和网络错误,即使我可以在本地看到正在提供请求并且正在创建响应而Web服务中没有任何错误.

我在Postman和Chrome中尝试过,它会收到重定向响应并相应地重定向.

我不确定这是否是一个CORS问题,如果是,我该如何解决?

我已经在CORS过滤器的响应头中添加了

Access-Control-Expose-Headers: Location, [own headers]
Access-Control-Allow-Origin: '*'
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS, DELETE
Access-Control-Max-Age: [some age]
Access-Control-Allow-Headers: [own headers]
Run Code Online (Sandbox Code Playgroud)

当我使用Postman时,位置出现在标题中

我使用Axios和配置进行的请求是

const config = {
  url: [someURL],
  method: 'GET',
  headers: {
    'customHeader':'token',
  },
  params: {
    [params]
  },
  maxRedirects: 0,
  validateStatus: status => (status >= 200 && status < 300) || status === 302,
};
Run Code Online (Sandbox Code Playgroud)

任何帮助都会非常感激,为什么响应在到达我的JS代码时是未定义的,但在Postman和Chrome中工作正常.

我可以解决这个问题的方法是使用HTTP状态代码200并获取位置标头以重定向,但我想避免这种情况,因为它在技术上是一个重定向响应.

javascript cors axios

6
推荐指数
1
解决办法
1361
查看次数

Angular2,如何防止HTTP重定向

我试图通过angular2 Http模拟用户登录.让我们描述下面的情况.
我有一个php应用程序,用户可以登录throw http://sample.com/login.phpurl(一个表单存在用户名和密码输入,用户应填写输入并按提交按钮)如果登录成功,他们重定向到http://sample.com/dashboard.php.
所以我Http用一个表格数据创建一个帖子,里面有"用户名"和"密码".并将Http标头设置content-typeapplication/x-www-form-urlencoded.
登录工作正常,请求自动重定向到http://sample.com/dashboard.php.
问题是我需要访问第一个请求响应头(http://sample.com/login.php),但是Http响应了第二个请求响应头(http://sample.com/dashboard.php).
是否有任何方法可以防止Http重定向?或者在状态302上抛出错误?

var headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'});
var options = new RequestOptions({ headers: headers });
Http.post("http://sample.com/login.php",'username=admin&password=123' , options)
    .subscribe(success => {
        // success and return redirected response
        // response of http://sample.com/dashboard.php
    }, error => {
        // error handler
    }
);
Run Code Online (Sandbox Code Playgroud)

javascript redirect http angular

5
推荐指数
1
解决办法
3907
查看次数

在通过常规表单提交或Ajax请求访问时使浏览器重定向的表单 - 这可能吗?

我有一个带有表单的网页.当用户提交表单时,我希望服务器使浏览器重定向到表单操作的不同页面.现在,我通过使用PHP的函数发送302状态代码来做到这一点.它工作正常.

我试图让服务器上的页面以相同的方式重定向浏览器,无论它是否正常提交(没有Javascript)或通过Ajax.我尝试通过将窗口位置设置为Location头中的任何URL来实现此目的.我正在使用jQuery,并进行如下调用:

$.ajax({
    url: this.action,
    type: "POST",
    data: getFormData(this),
    complete: function(request) {
        window.location.assign(request.getResponseHeader("Location"));
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,这没有用.在考虑之后,我意识到这并不是很令人惊讶.在Ajax请求中,浏览器应该在更改readyState之前透明地处理重定向响应,例如302代码.当完整函数运行时,它正在查找最终目标中的Location标头而未找到它.

作为实验,我尝试使用Location标头发送200状态代码.我尝试了Ajax请求,它工作正常.但是,当我执行非Ajax提交时,它不起作用.浏览器转到表单操作页面并保持在那里,就像它忽略了Location标题一样.

有没有办法在两种情况下都使同一页面重定向,而服务器不必知道或关心请求是否是Ajax请求?

如果这很重要,我在各种浏览器(IE8,IE7,IE6,Firefox 3.5,Chrome)中尝试了表格,每次都有类似的结果.此外,我正在做一个帖子请求,以避免碰到IE的2083字符URL长度限制.

html javascript php ajax jquery

4
推荐指数
1
解决办法
832
查看次数