精华内容
下载资源
问答
  • 获取网页源代码,返回code是302 用真机调试 ,请大神指点迷津,万分感谢! URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET...
  • 遇到一个限制域名的平台,于是使用nginx在做网站转发,其中目标网站在访问过程中使用了多个302、303的返回状态,以便跳转到指定目标(为什么限制,就是防止他的网站的镜像)。 在查找了一段资料后,发现nginx可以...

    背景

    遇到一个限制域名的平台,于是使用nginx在做网站转发,其中目标网站在访问过程中使用了多个302、303的返回状态,以便跳转到指定目标(为什么限制,就是防止他的网站的镜像)。

    在查找了一段资料后,发现nginx可以proxy网站,让其在自己的网站路径上访问。本文总共解决以下两个需求:

    1. 访问指定路径时,代理指定网站
    2. 解决302、303状态码的网站
    3. 修改response的header
    4. 修改response的网页内容

    1. 访问指定路径跳转到网站

    使用proxy_pass指令来实现,示例如下:

    # 访问http://www.a.com/jump,就跳到指定路径http://www.b.com/jump ,配置如下
    location ~* ^/jump$ {
        proxy_pass http://www.b.com/jump;
    }
    

    2. 解决302,303的状态码nginx直接返回问题

    在代理目标网站时,目标网站使用了302的状态码,这样nginx直接返回后,网址变了,不受本网站的控制,下来就解决此问题:
    使用proxy_redirect指令来实现,示例如下:

    # 访问http://www.a.com/jump,就跳到指定路径http://www.b.com/jump ,返回302,其中要跳转到www.c.com网站去,然后还是访问本地网站,配置如下
    location ~* ^/jump$ {
        proxy_pass http://www.b.com/jump;
    
        proxy_redirect http://www.c.com/ /; #请求c网站映射到当前网站的/目录
    }
    

    以上代码过程:访问http://www.a.com/jump时,nginx后台会访问http://www.b.com/jump获取返回内容,且状态码时302,如果不控制的话,浏览器会把302中location拿出来直接访问,而location是c网站的网址,有两种办法一种是修改location然后返回,一种是就是proxy_redirect方式。

    3. 修改response的header

    前两点是直接路径跳转的,现在又有一个需求就是修改302中的location中的一些参数,那么proxy_redirect就没有办法了,这个时候需要使用ngx_lua模块了,这个模块可是用于lua语言进行控制nginx的一些逻辑。

    需要安装LuaJIT,并且下载lua-nginx-modulengx_devel_kit备用,(参考Nginx编译安装Lua模块)

    然后需要重新安装nginx,其中配置时把备用的两个东西以--add-module=/XXX/YYY/ngx_devel_kit-XXXX形式来引入进来,然后安装等等

    配置文件做如下修改,主要两步:1.拦截302;2.使用rewirte_by_lua使用lua语言进行逻辑处理:

    proxy_intercept_errors on;
    recursive_error_pages on;
    location ~* ^/test2$ {
        proxy_pass http://www.b.com/test2;
        error_page 302 = @error_page_302;
    }
    
    # 拦截处理器,其中rewrite_by_lua中后面的字符串就是lua模块的代码,`string.gsub`字符串替换,`local upstream_http_location`定义变量
    # `ngx.redirect`跳转到指定路径
    location @error_page_302 {
        rewrite_by_lua '
                local upstream_http_location = string.gsub(ngx.var.upstream_http_location, "ac.95516.com","sp.xadaoke.cn")
                ngx.redirect(upstream_http_location) ';
    }
    
    

    其他

    如果想替换response返回的内容,可以使用ngx_http_sub_module模块来处理,这个模块需要在安装nginx时配置加上--with-http_sub_module,配置中需要如下代码:

    location ~* ^/test3$ {
        proxy_pass http://www.b.com/test3;
        sub_filter '这个网页的原始内容' '这个网页的修改后内容';
    }
    

    总结

    找了很多资料,都没有找到符合文章,自己写此文章记录一下

    展开全文
  • 常见的网页返回

    2017-07-29 16:20:09
    通常,这表示服务器提供了请求的网页。201(已创建) 请求成功且服务器已创建了新的资源。202(已接受) 服务器已接受了请求,但尚未对其进行处理。 203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另...

    DOM元素简介

    200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

    201(已创建) 请求成功且服务器已创建了新的资源。

    202(已接受) 服务器已接受了请求,但尚未对其进行处理。

    203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另一来源的信息。

    204(无内容) 服务器成功处理了请求,但未返回任何内容。

    205(重置内容) 服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。

    206(部分内容) 服务器成功处理了部分 GET 请求。

    300(多种选择) 服务器根据请求可执行多种操作。服务器可根据请求者 来选择一项操作,或提供操作列表供其选择。

    301(永久移动) 请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。您应使用此代码通知搜索引擎蜘蛛网页或网站已被永久移动到新位置。

    302(临时移动) 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此您不应使用此代码来告诉搜索引擎页面或网站已被移动。

    303(查看其他位置) 当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。

    304(未修改) 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。

    305(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。

    307(临时重定向) 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。会自动将请求者转到不同的位置。但由于搜索引擎会继续抓取原有位置并将其编入索引,因此您不应使用此代码来告诉搜索引擎某个页面或网站已被移动。

    400(错误请求) 服务器不理解请求的语法。

    401(身份验证错误) 此页要求授权。您可能不希望将此网页纳入索引。

    403(禁止) 服务器拒绝请求。

    404(未找到) 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。

    405(方法禁用) 禁用请求中指定的方法。

    406(不接受) 无法使用请求的内容特性响应请求的网页。

    407(需要代理授权) 此状态码与 401 类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。

    408(请求超时) 服务器等候请求时发生超时。

    409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。

    410(已删除) 请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久删除,您应当使用 301 指定资源的新位置。

    411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。

    412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。

    413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

    414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。

    415(不支持的媒体类型) 请求的格式不受请求页面的支持。

    416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态码。

    417(未满足期望值) 服务器未满足”期望”请求标头字段的要求。

    500(服务器内部错误) 服务器遇到错误,无法完成请求。

    501(尚未实施) 服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。

    502(错误网关) 服务器作为网关或代理,从上游服务器收到了无效的响应。

    503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。

    504(网关超时) 服务器作为网关或代理,未及时从上游服务器接收请求。

    505(HTTP 版本不受支持) 服务器不支持请求中所使用的 HTTP 协议版本。
    期中较为常见的状态码为200请求成功 400请求数据格式出错 304网页文件有缓存 404文件缺失或路径错误 500服务器后台报错

    展开全文
  • 在使用curl 的时候 ,偶尔会遇到一些URL... 此时如果不设置自动跳转倒新url的话,可能会出现问题。 一些网上的解决方法: curl获取302跳转之后的内容  $ch = curl_init($url); $headers = array( "Content-

    在使用curl 的时候 ,偶尔会遇到一些URL跳转到新的URL,即HTTP中的3XX(redirection,重定向 )

    此时如果不设置自动跳转倒新url的话,可能会出现问题。

    一些网上的解决方法:

    curl获取302跳转之后的内容

         $ch = curl_init($url);
            $headers = array(
                "Content-type: text/xml;charset=\"utf-8\"",
                "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1",
                "Cache-Control: no-cache",
                "Pragma: no-cache"
            );
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳转后的页面
            $response = curl_exec($ch);

    以及 curl_easy_setopt参数详细介绍!

    CURLOPT_HEADER:设为1,则在返回的内容里包含http header;
    
    CURLOPT_FOLLOWLOCATION:设为0,则不会自动301,302跳转;
    
    *CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。
    *CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
    *CURLOPT_HEADER: 如果你想把一个头包含在输出中,设置这个选项为一个非零值。
    *CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。
    
     
    
    注意:PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。
    
    *CURLOPT_NOBODY: 如果你不想在输出中包含body部分,设置这个选项为一个非零值。
    *CURLOPT_FAILONERROR: 如果你想让PHP在发生错误(HTTP代码返回大于等于300)时,不显示,设置这个选项为一人非零值。默认行为是返回一个正常页,忽略代码。
    *CURLOPT_UPLOAD: 如果你想让PHP为上传做准备,设置这个选项为一个非零值。
    *CURLOPT_POST: 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
    *CURLOPT_FTPLISTONLY: 设置这个选项为非零值,PHP将列出FTP的目录名列表。
    *CURLOPT_FTPAPPEND: 设置这个选项为一个非零值,PHP将应用远程文件代替覆盖它。
    *CURLOPT_NETRC: 设置这个选项为一个非零值,PHP将在你的 ~./netrc 文件中查找你要建立连接的远程站点的用户名及密码。
    *CURLOPT_FOLLOWLOCATION: 设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,PHP将发送形如 “Location: “的头)。
    *CURLOPT_PUT: 设置这个选项为一个非零值去用HTTP上传一个文件。要上传这个文件必须设置CURLOPT_INFILE和CURLOPT_INFILESIZE选项.
    *CURLOPT_MUTE: 设置这个选项为一个非零值,PHP对于CURL函数将完全沉默。
    *CURLOPT_TIMEOUT: 设置一个长整形数,作为最大延续多少秒。
    *CURLOPT_LOW_SPEED_LIMIT: 设置一个长整形数,控制传送多少字节。
    *CURLOPT_LOW_SPEED_TIME: 设置一个长整形数,控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数。
    *CURLOPT_RESUME_FROM: 传递一个包含字节偏移地址的长整形参数,(你想转移到的开始表单)。
    *CURLOPT_SSLVERSION: 传递一个包含SSL版本的长参数。默认PHP将被它自己努力的确定,在更多的安全中你必须手工设置。
    *CURLOPT_TIMECONDITION: 传递一个长参数,指定怎么处理CURLOPT_TIMEVALUE参数。你可以设置这个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。这仅用于HTTP。
    *CURLOPT_TIMEVALUE: 传递一个从1970-1-1开始到现在的秒数。这个时间将被CURLOPT_TIMEVALUE选项作为指定值使用,或被默认TIMECOND_IFMODSINCE使用。
    
    下列选项的值将被作为字符串:
    
    *CURLOPT_URL: 这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项。
    *CURLOPT_USERPWD: 传递一个形如[username]:[password]风格的字符串,作用PHP去连接。
    *CURLOPT_PROXYUSERPWD: 传递一个形如[username]:[password] 格式的字符串去连接HTTP代理。
    *CURLOPT_RANGE: 传递一个你想指定的范围。它应该是”X-Y”格式,X或Y是被除外的。HTTP传送同样支持几个间隔,用逗句来分隔(X-Y,N-M)。
    *CURLOPT_POSTFIELDS: 传递一个作为HTTP “POST”操作的所有数据的字符串。
    *CURLOPT_REFERER: 在HTTP请求中包含一个”referer”头的字符串。
    *CURLOPT_USERAGENT: 在HTTP请求中包含一个”user-agent”头的字符串。
    *CURLOPT_FTPPORT: 传递一个包含被ftp “POST”指令使用的IP地址。这个POST指令告诉远程服务器去连接我们指定的IP地址。这个字符串可以是一个IP地址,一个主机名,一个网络界面名(在UNIX下),或是‘-’(使用系统默认IP地址)。
    *CURLOPT_COOKIE: 传递一个包含HTTP cookie的头连接。
    *CURLOPT_SSLCERT: 传递一个包含PEM格式证书的字符串。
    *CURLOPT_SSLCERTPASSWD: 传递一个包含使用CURLOPT_SSLCERT证书必需的密码。
    *CURLOPT_COOKIEFILE: 传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。
    *CURLOPT_CUSTOMREQUEST: 当进行HTTP请求时,传递一个字符被GET或HEAD使用。为进行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request.
    
    注意: 在确认你的服务器支持命令先不要去这样做。
    
    下列的选项要求一个文件描述(通过使用fopen()函数获得):
    
    *CURLOPT_FILE: 这个文件将是你放置传送的输出文件,默认是STDOUT.
    *CURLOPT_INFILE: 这个文件是你传送过来的输入文件。
    *CURLOPT_WRITEHEADER: 这个文件写有你输出的头部分。
    *CURLOPT_STDERR: 这个文件写有错误而不是stderr。

     

    展开全文
  • 爬取页面时302重定向导致response页面与实际需要爬取的页面信息不一致。 解决方法: 有些网站需要检查cookies头部信息,这样无需登录就能进行访问,所以可以在settings中添加头部信息cookies,即可正常进行爬取操作 ...

    练习scrapy爬虫遇到爬取页面时302重定向导致response页面与实际需要爬取的页面信息不一致,导致无法正常获取信息,查看日志存在 scrapy.downloadermiddlewares.redirect 。
    解决方法:
    有些网站需要检查cookies头部信息,这样无需登录就能进行访问,所以可以在settings中添加头部信息cookies,同时将cookies_enabled参数置为false,即可正常进行爬取操作

    # Disable cookies (enabled by default)
    COOKIES_ENABLED = False
    
    DEFAULT_REQUEST_HEADERS = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'cookie':'xxxxxxxxx'
    }
    
    展开全文
  • 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器会返回 HTTP 状态码响应请求。 此状态码提供关于请求状态的信息,告诉 Googlebot ...
  • 404:访问路径不正确,原始网页URL失效 ...302:服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。(临时移动) 500:服务器内部响应出错 200:服务器已成功处理了请求,
  • set_time_limit(0); error_reporting(1024); ob_start(); ...charset=GBK");... if($info['http_code']==302){ getCurlData($url); } */ curl_close($ch); return $cdata; } ob_end_flush(); exit; ?>
  • 一.简单介绍 (1). 301,302 都是HTTP状态的编码,都代表着某个...302 redirect: 302 代表暂时性转移(Temporarily Moved )。 (2). 301,302对用户来说没有区别,他们看到效果只是一个跳转,浏览器中旧的URL变成...
  • HTTP协议中返回代码302的情况

    万次阅读 2014-10-13 17:21:28
    http 重定向 302
  • 访问网站时错误页面可正常显示,但HTTP状态码却是302,对SEO很不友好,按下列步骤修改使错误页面返回正确的利于SEO的404状态码,感兴趣的朋友可以了解下 在配置文件中配置404页面如下:web.config         ...
  • http请求返回302

    2013-03-26 19:41:00
    302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”,而HttpServletResponse中相应的常量是SC_MOVED_TEMPORARILY,而不是SC_FOUND。...
  • 今天使用scrapy框架爬取一个网页图片时,遇到DEBUG: Redirecting (302) to <网址1> from <网址2> 的问题。网址1是重定向的网址,网址2是原网址。 用鼠标点击pycharm中的网址1,就进入该页面: ![图片说明]...
  • HTTP返回码中301与302的区别

    千次阅读 2019-01-06 11:10:49
    一.官方说法 301,302 都是HTTP状态...302 redirect: 302 代表暂时性转移(Temporarily Moved )。   二、详细说明 字面上的区别就是301是永久重定向,而302是临时重定向。 当然,他们之间也是有共同点的,...
  • 在我们分析网站IIS日志的时候,优化网页或者检测网页的时候 ,都会对于网页的HTTP返回码进行查询以及检测。因为这个为我们的网站检测和优化能起到至关重要的作用。  什么是HTTP返回码呢?就是如果某项请求发送...
  • 我们可以利用jquery.ajax的datafilter ,请保证你的所有...请在公共的header头里面写上这样的js代码 //做一个过滤器处理服务端超时后302的情况 $.ajaxSetup({ dataFilter:function(response){ if(response.
  • http返回网页状态码查询

    千次阅读 2011-11-29 14:47:22
    如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器会返回 ...200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务器超时
  • 网页跳转代码简介 301 302

    千次阅读 2011-12-02 10:37:36
    网页跳转的目的本来很简单,就是当用户或系统需要时从一个页面转向另一个页面,跳转时的HTTP的状态码一般为200,301,302中的一个,下面先列出各状态码出现的情况,然后再解释各状态码有什么不同:  200 正常状态...
  • 200 (成功) 服务器已成功处理了请求。...302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 404 (未找到) 服务器找不到请求的网页。 500 (服务器内部错误)...
  • 出现这个返回码,就是页面从定向的问题,需要把域名配置好,看你问题出在哪一步,看这个配置回调域名解决办法
  • ![图片说明](https://img-ask.csdn.net/upload/202008/04/1596517291_147599.png)
  • 常用的重定向方式有: 301 redirect, 302 redirect 与 meta fresh: 301 redirect: 301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,...
  • // 输出为302,也就是说网页发生了重定向 // 得到重定向后的网页 Header redirect = postMethod.getResponseHeader("location"); String url = redirect.getValue(); // 使用get请求,访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,718
精华内容 12,687
关键字:

网页返回302