GVKun编程网logo

从JavaScript检测HTTP 301状态代码(js获取http状态码)

15

对于从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状态码)

从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代码

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

javascript – Preflight具有无效的HTTP状态代码404 Jquery AJAX POST

好吧,当它在控制台中出现此错误时,我真的很讨厌它.而且我知道stackoverflow充斥着这些类型的问题.但是,我已经完成了研究,并且在我的Web API 2 Web服务中启用了CORS,我仍然遇到此错误.

这是我的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);
    }
});

这是控制台中的错误:

enter image description here

控制台网络说:

enter image description here

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

解决方法

在我的Web API web.config文件中使用以下配置部分以避免404错误.

<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头

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服务请求的成功/失败?

javascript – 使用HTTP状态代码来反映Web服务请求的成功/失败?

我正在实现返回一个 JSON编码的有效载荷的Web服务.如果服务调用失败 – 例如,由于参数无效,返回JSON编码错误.不过,我不确定在这种情况下应该返回什么HTTP状态代码.

一方面,HTTP状态代码似乎适用于HTTP:即使正在返回应用程序错误,HTTP传输本身也是成功的,建议200 OK响应.

另一方面,RESTful方法似乎表明,如果调用者试图发布资源,并且请求的JSON参数无效,那么400错误请求是合适的.

我在客户端使用Prototype,它有一个很好的机制,可以根据HTTP状态代码(onSuccess和onFailure)自动调度到不同的回调,所以我试图使用状态代码来指示服务成功或失败,但是有兴趣听到有人在这个问题上有常见做法的意见或经验.

谢谢!

解决方法

http状态码仅用于指示应用程序响应的状态.
正如你所说,如果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服务请求的成功/失败?的相关信息,请在本站查询。

本文标签: