对于从JavaScript检测HTTP301状态代码感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解js获取http状态码,并且为您提供关于ESLint检测JavaScript代码、java
对于从JavaScript检测HTTP 301状态代码感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解js获取http状态码,并且为您提供关于ESLint检测JavaScript代码、javascript – Preflight具有无效的HTTP状态代码404 Jquery AJAX POST、javascript – 使用Ajax从HTTP 300代码响应中提取HTTP头、javascript – 使用HTTP状态代码来反映Web服务请求的成功/失败?的宝贵知识。
本文目录一览:- 从JavaScript检测HTTP 301状态代码(js获取http状态码)
- ESLint检测JavaScript代码
- javascript – Preflight具有无效的HTTP状态代码404 Jquery AJAX POST
- javascript – 使用Ajax从HTTP 300代码响应中提取HTTP头
- javascript – 使用HTTP状态代码来反映Web服务请求的成功/失败?
从JavaScript检测HTTP 301状态代码(js获取http状态码)
如果请求的文件(带XMLHttpRequest)有301响应,我需要检测客户端.这样做的原因是因为我需要请求与文件相关的其他文件,其中用户已被重定向,并且与请求的第一个文件无关.
有没有办法使用JavaScript或JQuery检测此响应状态代码?
谢谢.
解决方法:
jQuery ajax回调函数给出了很多信息
$.ajax({
url: "test.PHP",
type: "GET",
data: {},
dataType:"json",
success: function(resp, textStatus, xhr) {
//status of request
console.log(xhr.status);
},
complete: function(xhr, textStatus) {
console.log(xhr.status);
}
});
ESLint检测JavaScript代码
1、安装
有2中安装方式:全局安装和局部安装。
局部安装方式为:
(1)cnpm install -g eslint
(2)打开项目目录、配置eslint文件
eslint --init
(3)执行eslint
eslint yourfile.js
2、常见配置规则
''rules'': {
// no-var
''no-var'': ''error'',
// 要求或禁止 var 声明中的初始化
''init-declarations'': 2,
// 强制使用单引号
''quotes'': [''error'', ''single''],
// 要求或禁止使用分号而不是 ASI
''semi'': [''error'', ''never''],
// 禁止不必要的分号
''no-extra-semi'': ''error'',
// 强制使用一致的换行风格
''linebreak-style'': [''error'', ''unix''],
// 空格2个
''indent'': [''error'', 2, {''SwitchCase'': 1}],
// 指定数组的元素之间要以空格隔开(,后面), never参数:[ 之前和 ] 之后不能带空格,always参数:[ 之前和 ] 之后必须带空格
''array-bracket-spacing'': [2, ''never''],
// 在块级作用域外访问块内定义的变量是否报错提示
''block-scoped-var'': 0,
// if while function 后面的{必须与if在同一行,java风格。
''brace-style'': [2, ''1tbs'', {''allowSingleLine'': true}],
// 双峰驼命名格式
''camelcase'': 2,
// 数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号,
''comma-dangle'': [2, ''never''],
// 控制逗号前后的空格
''comma-spacing'': [2, {''before'': false, ''after'': true}],
// 控制逗号在行尾出现还是在行首出现
''comma-style'': [2, ''last''],
// 圈复杂度
''complexity'': [2, 9],
// 以方括号取对象属性时,[ 后面和 ] 前面是否需要空格, 可选参数 never, always
''computed-property-spacing'': [2, ''never''],
// TODO 关闭 强制方法必须返回值,TypeScript强类型,不配置
// ''consistent-return'': 0
}
3、某个文件取消eslint检测
在文件头部添加
/* eslint-disable */
javascript – Preflight具有无效的HTTP状态代码404 Jquery AJAX POST
这是我的Web API 2代码:
namespace WebApi.App.Controllers { [EnableCors(origins: "*",headers: "*",methods: "*")] public class ServiceController : ApiController { [HttpGet] [Route("GetData")] public IHttpActionResult GetEmpData(DATAvars theDATA) { return Ok("WORKED! " + theDATA); } [HttpPost] [Route("PostData")] public IHttpActionResult PostempData(DATAvars theDATA) { return Ok("WORKED! " + theDATA.theID); } } public class DATAvars { public string theID { get; set; } public string empImg { get; set; } } }
和
<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule"/> </modules> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" /> </customHeaders> </httpProtocol> <handlers> <remove name="WebDAV" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONsverbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers>
和
namespace WebApi.App { public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Formatters.Clear(); config.Formatters.Add(new JsonMediaTypeFormatter()); config.MapHttpAttributeRoutes(); config.EnableCors(); } } }
和
public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); } protected void Application_BeginRequest(object sender,EventArgs e) { HttpContext.Current.response.addheader("Access-Control-Allow-Origin","*"); if (HttpContext.Current.Request.HttpMethod == "OPTIONS" ) { //These headers are handling the "pre-flight" OPTIONS call sent by the browser HttpContext.Current.response.addheader("Access-Control-Allow-Methods","GET,POST" ); HttpContext.Current.response.addheader("Access-Control-Allow-Headers","Content-Type,Accept" ); HttpContext.Current.response.addheader("Access-Control-Max-Age","1728000"); HttpContext.Current.Response.End(); } } }
然后为我的AJAX调用代码(在另一个域上托管):
$.ajax({ type: "POST",crossDomain: true,url: "http://dev-blahblah/newWS/PostData",beforeSend: function (xhrObj) { xhrObj.setRequestHeader("Content-Type","application/json"); },data: { theID: "2135648792",empImg: "false" },dataType: "json",success: function (data) { console.log(data); },error: function (XMLHttpRequest,textStatus,errorThrown) { console.log(XMLHttpRequest); } });
这是控制台中的错误:
控制台网络说:
Failed to load resource: the server responded with a status of 404 (Not Found)
index.html:1 XMLHttpRequest cannot load 07002. Response for preflight has invalid HTTP status code 404
现在这是SAME请求但在POSTMAN中:
我花了DAYS试图弄清楚这个和无休止的googleing找到例子,我有,但似乎所有的例子都不起作用.
我非常感谢有人让我知道我需要做什么才能使用JQUERY AJAX.
-Running it on the same domain in CHROME = WORKS
-Running it on a different domain in CHROME = DOES NOT WORK
-Running it on the same domain in IE = WORKS
-Running it on a different domain in IE = WORKS
解决方法
<handlers> <remove name="WebDAV"/> <remove name="OPTIONsverbHandler" /> <remove name="TRACEVerbHandler" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,DEBUG,PATCH,OPTIONS" modules="IsapiModule" scriptprocessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,OPTIONS" modules="IsapiModule" scriptprocessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> <add name="OPTIONsverbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" responseBufferLimit="4194304" /> </handlers>
javascript – 使用Ajax从HTTP 300代码响应中提取HTTP头
我正在向接受跨域请求的服务器执行Ajax请求,但我无法控制服务器代码.我的愿望是从响应中提取HTTP链接头.举个例子:
$.ajax({
url: theURL
}).done(function(data,textStatus,xhr){});
命中服务器响应以下内容(当使用curl查询URL时可观察到):
HTTP/1.1 302 Found
Link: <http://thedataIwant.com>;rel="foo"
Location: http://someothersite.com
浏览器遵循HTTP 3XX代码,我在done()处理程序中从http://someothersite.com获取HTTP头的内容;但是,我想首先使用3XX代码提取初始HTTP响应的链接头的内容.
如何从具有3XX状态代码的HTTP响应中提取HTTP链接头的内容?
解决方法:
我对你的问题很感兴趣,但是要寻找解决方案.不幸的是,没有一个直接的.根据我到目前为止所读的所有帖子(How to manage a redirect request after a jQuery Ajax call和许多类似的帖子),你不能简单地捕获301重定向,因为浏览器通常会获取内容并将端点提供给用户,这就是为什么你得到200状态代码而不是302.作为一种解决方法,人们建议使用自定义标头.当您在执行ajax请求后收到标头时,您可以进行自己的操作,即保存链接标头,然后再发出第二个ajax请求以从MyRedirectLocationHeader获取内容:http://someothersite.com.
代码看起来与此类似:
$.ajax({
url: theURL,
success: function(response, status, xhr) {
var link = xhr.getResponseHeader('Link');
if(link != null) {
// my second ajax request to the link in the MyRedirectLocationHeader
}
}
});
这是一个非常糟糕的黑客攻击,但这是迄今为止我发现的唯一可行的解决方法.另一种方法可能是您使用PHP,Java或其他类似语言创建代理脚本/服务,这样可以在不遵循重定向的情况下获取请求,并且仅将链接和位置打印为JSON或XML.之后你的javascript将解析响应并进入someothersite.com
但有趣的是,官方的jQuery ajax documentation页面暗示支持3xx重定向(靠近statusCode的文档),但这似乎不起作用.
javascript – 使用HTTP状态代码来反映Web服务请求的成功/失败?
一方面,HTTP状态代码似乎适用于HTTP:即使正在返回应用程序错误,HTTP传输本身也是成功的,建议200 OK响应.
另一方面,RESTful方法似乎表明,如果调用者试图发布资源,并且请求的JSON参数无效,那么400错误请求是合适的.
我在客户端使用Prototype,它有一个很好的机制,可以根据HTTP状态代码(onSuccess和onFailure)自动调度到不同的回调,所以我试图使用状态代码来指示服务成功或失败,但是有兴趣听到有人在这个问题上有常见做法的意见或经验.
谢谢!
解决方法
正如你所说,如果json参数以某种方式无效,则400状态代码是适当的答案.
所以是的,这是一个很好的主意,使用http状态码. de plus,状态码很容易理解,因为它们不会从应用程序(Web服务)变为另一个
我们今天的关于从JavaScript检测HTTP 301状态代码和js获取http状态码的分享已经告一段落,感谢您的关注,如果您想了解更多关于ESLint检测JavaScript代码、javascript – Preflight具有无效的HTTP状态代码404 Jquery AJAX POST、javascript – 使用Ajax从HTTP 300代码响应中提取HTTP头、javascript – 使用HTTP状态代码来反映Web服务请求的成功/失败?的相关信息,请在本站查询。
本文标签: