当前位置:首页 » 网页前端 » 前端请求代理出错
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端请求代理出错

发布时间: 2023-03-23 02:35:05

1. 前端ajax请求常见的状态码以及产生的原因

注:以下状态码大部分都是自己项目中遇到的,现记录方便日后查看。
通常前后端使用ajax交互时,客户端向服务器发送请求时,然后服务器向我们返回状态码。 状态码就是告诉我们服务器响应的状态 ,由3位数字组成,其中第一位数字表示响应类别,响应类别从1到5分为五种 。

表示请求被服务器正常处理 ,最常见的就是这个

表示请求已成功处理,但是没有内容返回
也就是返回的响应报文中没有报文实体
一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况

永久重定向,表示请求的资源已经永久的搬到了其他位置 ,资源已经被分配了新的URI

临时重定向,表示请求的资源临时搬到了其他位置 ,请求的资源暂时被配到到了新的URI,和301很像,只不过资源是临时移动

表示请求资源存在另一个URI,应使用GET定向获取请求资源
303功能与302一样,区别只是303明确客户端应该使用GET访问

表示客户端自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
304通常在IE浏览器下多次请求同一个地址出现的。
场景:删除表格其中一条数据后重新请求列表数据渲染表格,第二次请求时状态码是304导致被删除的数据还是出现在前端。
原因:IE浏览器下同一地址的ajax请求优先读取本地缓存数据
解决方法:在请求地址后面加上时间戳,保证每次请求的地址都不一样,这样浏览器就无法读取缓存。

表示请求报文存在语法错误或参数错误,服务器不理解 ,需要修改请求内容后再次发送

表示发送的请求需要有HTTP认证信息或者是认证失败了
返回401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部以质询用户信息

表示对请求资源的访问被服务器拒绝了,通常是 没有权限或者跨域

表示服务器找不到请求的资源

表示请示方式不对,注意检查method,比如后端定义post请求方式而我们用了get,delete,put,path等方式均报错。

表示服务器执行请求的时候出错了。(后端的问题)

表示服务器超负载或正停机维护,无法处理请求

以上,如有错误欢迎指正,如果喜欢还请点个赞再走,谢谢!更多项目实战源码请移步我的 码云地址

2. 前端打包之后的代码放到服务器上请求路径不对

这个应该是设置了代理 或者是配置错了 可以看看配置文件 或者封装ajax的地方是不是设置了默认根路径

3. 2021-09-13 一文解析前端请求307导致CORS跨域失败

公司的系统偶尔会出现跨域错误,同事们的解决方法一般是清空浏览器缓存即可解决。大家一直都觉得很奇怪,但因为是偶发事件都不太关注。最近,经过一些资料搜索和努力排查,终于明白了是怎么基销回事

根据现象可以发现:

返回头:

先说结论:
-- 原因是浏览器在发送搏知游http请求时自动进行307内部跳转,导致了跨域预检失败。
-- 为什么会307内部跳转呢? 是因为浏览器采用HSTS(HTTP Strcit-Transport-Securit)策略,将所有非http的请求内部跳转成https。
-- 为什么浏览器认为这个域名需要采用HSTS策略呢?因为服务端/nginx返回的http请求header里配置了Strict-Transport-Security(严格传输安全)选项。

现代浏览器和服务器都开始支持 HSTS(HTTP Strict Transport Security) 功能,即自动将不安全的 HTTP 请求使用 307 Internal Redirect 跳转到 HTTPS 请求。这是由Chrome内部HSTS缓存导致的。Chrome 会自动记住每个域的 HSTS 设置,也就是说HSTS只要在理论上的第一次暴露后,后来就不经网页服务器返回,浏览器会查询本地数据,直接伪造 HSTS 307 跳转到安全的 HTTPS,以此来加强网络访问的安全性。

问题是,是谁告诉浏览器这么做的呢?
原因是在nginx配置中有这么一段:

浏览器接到这样的回复头:

这里意思是通知浏览器,访问的这个域名需要采用HSTS策略,并且过期时间是31622400秒(一年),在这一年中都需要使用HSTS策略,意味着发起http请求时,浏览器都会强行进行307内部跳转。

然后因为307跳转被cors预检请求认为是不合法的,故此预检失败:猛孝

将: add_header Strict-Transport-Security max-age=31622400
改为: add_header Strict-Transport-Security max-age=0;

4. thinkphp前端显示网络异常

THINKPHP作为国内比较出色的PHP框架,近年发展还是比较迅速,目前最新版本已经到TP5.1,安全性能等都有不少提升,使用的程序员也越来越多,所以THINKPHP制作的网站也越来越多,今天,方维网络就来分析THINKPHP网站打不开的原因有哪些?当你的网站打不开时,方便你排查问题!

一、服务器挂了。如果网站打不开的表现是网络连接错误,没有输出任何错误信息,那么很可能就是服务器网络出问题或者服务器死机了。

二、数据库挂了。一般会提示错误信息,如果没有屏蔽错误,会直接显示数据库连接错误。

三、网站空间满了。不管是nginx还是apache,或是THINKPHP本身,都会产生很多日志文件,当硬盘不够大的时候,THINKPHP无法生成缓存文件,导致网站打不开出错。这种问题很简单,就是从服务器删除占用比较大的日志文件或者对服务器进行扩容。

四、apache、nginx或者是IIS挂了,这个可以进服务器查看,可以重启下。

五、网站文件被篡改,一般是网站密码泄露或者网站已经被黑客攻破的情况。这种可以通过FTP软件查看网站文件的修改日期来判断。

六、程序本身有问题,如存在死循环等BUG,这个就需要程序员去调试分析,这种出现概率比较低,因为一般早期就可发现。

七、访问量太大,服务器无法应付,这种情况应该升级服务器,或者 使用负载均衡分服务器部署,当然也可以使用一些缓存来缓解。

八、服务器网络和本地网络出现故障,如在国内访问国外服务器的网站,速度非常慢导致网站打不开。

九、服务器放在国外,然后服务器IP被国内屏蔽导致打不开,这种只能换服务器了。

THINKPHP网站打不开的原因很多,但最常见的就是:硬盘已满或者服务器出故障。

深圳方维网络专注于网站定制,定制各类品牌官网、商城、平台、旅游网站和小程序等,欢迎有需求客户咨询。

5. 前端在请求头中添加token就报错

你这个不是token的问题,而是跨域的问题,你这个请求跨域了,所以才报这个错误,如果要么配置代理,要么在后端对请求进行处理,允许跨域,要么用mockjs先做本地测试。

6. 哪个HTTP状态码表示前端的请求参数传错了

建议
1 项目统一,后端统一输出,前端统一判断
2 从业务分层角度,可有两种
2.1 使用http状态作业务状态信息交互,不绝握棚利于多种业务状态的处理并则

2.2 区别于http状态(不使用http状态作业务状态信息交互),便于日皮森后处理bug与逻辑纠纷,用其他字段,如errorCode - tx
3 具体值自行设计, 如:40000 4000 400 600 6100

7. 前端代理部署问题

作为前端最常出现的两个场景。

一,打宽芹蠢包在本地部署

二,打包给服务器部署

不管哪种都属要配置代理才能解决跨域问题

VUE

1.根目录下的vue.config.js中的 devServer 属性下进行配置.代理后访问 localhost:8088/ = http://xxx.xxx.xxx.xx/api

注首唤:只需要更改接口地址就可以切换不同环境。记得改完配置文件,要重启项目,才生效

2.configs文件下index.ts网络请求接口配置。访问到环境后有各种类型的接口有不同的前缀,根据需要进行配慎陪置

1.只需在根目录下package.json文件里添加属性

2.config里的配置同上

8. HTTP 400 错误是什么原因

HTTP400 Bad Request 表示语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求;请求参数有误。

解决方案:

1)对照字段名称,类型保证一致性;

2)使用stringify将前端传递的对象转化为字符串 ,data: JSON.stringify(param)。

(8)前端请求代理出错扩展阅读:

当用户试图通过HTTP或FTP协议访问一台运行主机上的内容时,Web服务器返回一个表示该请求的状态的数字代码。

该状态代码记录在服务器日志中,同时也可能在 Web 浏览器或 FTP客户端显示。也就是我们打开页面发生错误时浏览器显示的错误信息代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。

HTTP400系列错误列表:

1、401 Unauthorized

当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。

如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。参见RFC 2617。

2、402 Payment Required

该状态码是为了将来可能的需求而预留的。

3、403 Forbidden

服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。

4、404 Not Found

请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。

404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。出现这个错误的最有可能的原因是服务器端没有这个页面。

5、405 Method Not Allowed

请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表。鉴于 PUT,DELETE 方法会对服务器上的资源进行写操作,因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法,对于此类请求均会返回405错误。

9. 前端ajax请求出现400错误怎么解决

ajax 出错,有两种可能。 发送数据的时候报错 (URL 不对,参数不对 ) 接收数据的时候报错(这个错误在你即使请求成功了,但是没有返回值也会报错)

10. vue在浏览器刷新后显示代理错误

vue在浏览器刷新后显示代理错雹丛误的原因是前端项目路由配置的时候路由的用了丛肆兄history模渗袭式。根据查询相关公开信息,路由的模式改了,之后重新打包发到服务器。