Tag: http headers

如何使用ExpressJS确定正确的Accept Content-Type

我很难将ajax调用与ExpressJS中的其他调用区分开来。 据我所知,我可以使用request.accepts(‘json’)来识别json请求? 问题是 – 显然,每个电话都接受一切! app.get( ‘*’, function(request, response, next ) { console.log(‘request accepts:’) if( request.accepts( ‘json’ ) ){ console.log( ‘–> accepts json’ ) } if( request.accepts( ‘html’ ) ){ console.log( ‘–> accepts html’ ) } if( request.accepts( ‘blah’ ) ){ console.log( ‘–> accepts blah’ ) // this does not show up } if( request.accepts( […]

contentType:’application / json’和POST方法(JavaScript)

我需要用JavaScript创建一个Web服务器客户端,我在定义Request头时遇到了一些问题。 我需要POST方法和Content-Type:“application / json”。 我试过这个: $.ajax({ url: ‘http://MyWebServiceAddress’, data: JSON.stringify({user:’user’,pass:’pass’}), type: ‘POST’, crossDomain: true, dataType: ‘json’, success: function () { alert(“success”) }, error: function (xhr, ajaxOptions, thrownError) { alert(“Error: ” + xhr.status + “\n” + “Message: ” + xhr.statusText + “\n” + “Response: ” + xhr.responseText + “\n” + thrownError); } }); 但是如果我把contentType这样: contentType:’application / […]

使用`GET`请求表单的客户端,即使`POST`被定义。 是javascript iframe的原因?

我的网站上有两个后续表格,使用POST方法。 我的网站first.php的第一页包含以下代码: a.php只能通过此POST请求访问(否则用户将获取方法不允许405错误) 提交后,此表单将打开带有AJAX模式窗口的a.php 。 a.php包含另一种forms: 当用户单击第二种forms的提交时,它将打开b.php ,也可以仅通过POST请求访问(否则 – 405错误)。 我可以在这些表单之间考虑的唯一区别是第二个包含跟踪js类(打开iframe)。 这是js代码: $(document).ready(function() { $(“.tracking”).click(function(){ var iframe = document.createElement(‘iframe’); iframe.style.width = ‘0px’; iframe.style.height = ‘0px’; iframe.style.display = ‘block’; document.body.appendChild(iframe); iframe.src = ‘/track.htm’; }); 这样做是为了使用从track.htm第三方脚本来跟踪转换 我注意到我的iPad访问量约占5%。 他们使用POST请求正确打开a.php ,但是当他们继续并继续打开b.php ,大约5%发出GET请求而不是所需的POST请求,导致他们得到405错误并离开网站。 我知道这些是真正的人类用户,因为我可以看到他们中的一些人多次尝试打开b.php并继续得到这些405错误。 这可能是因为他们的设备同时使用GET请求获取track.htm吗? 这是一些小故障? 怎么解决这个问题? 编辑4.4.2015: 由于有可能触发跟踪脚本导致此问题,我想知道是否有另一个火来触发它(或跟踪adwords转换),而不会导致这些iPad用户也对表单使用“GET”请求。 编辑10.4.2015 : 这是ajax类的jquery代码,它同时影响first.php和a.php ,因为first.php是父框架: $(document).ready(function() { $(“.ajax”).click(function(t) { t.preventDefault(); var e […]

HTTP标头设置授权标头停止加载数据

我正在使用Ember.js,Ember Simple Auth插件和jQuery使用ajax发送Authorization标头跨域。 设置Authorization标头时: jqXHR.setRequestHeader(‘Authorization’, ‘Bearer ‘ + session.get(‘authToken’)); 然后我得到一个飞行前OPTIONS请求到REST URL,然后我返回以下标题: $headers->set(‘Access-Control-Allow-Origin’, ‘http://subdomain2.domain.com’); $headers->set(‘Access-Control-Allow-Methods’, ‘GET,PUT,POST,DELETE,OPTIONS’); $headers->set(‘Access-Control-Allow-Headers’, ‘Content-Type, Authorization, Accept’); $headers->set(‘Access-Control-Max-Age’, 10); $headers->set(‘Content-Length’, 0); 在Chrome网络监视器中,此OPTIONS请求返回成功。 然后当GET请求出现在飞行前OPTIONS请求之后, GET请求就会挂起或至少在网络监视器中说(pending) : 如果我在几秒钟之后刷新页面,页面将显示,但它在OPTIONS调用后不会立即显示。 当我使用Access-Control-Max-Age标头并增加缓存时间时,我可以在再次发送OPTIONS调用之前刷新很多次,这意味着页面将显示正常。 只有当OPTIONS调用在挂起后立即带有GET时才会出现。 当我直接在浏览器中加载url时,它显示JSON数据就好了。 即使我使用Chrome扩展程序Postman并手动设置Authorization标头与jQuery请求相同,它仍然可以正常加载数据(尽管我不认为Postman模拟跨域请求)。 知道为什么GET请求仍然未决并且没有返回任何错误或标题?

使用javascript测试url可用性

是否可以通过jQuery(或普通的javascript)来测试另一个域上的网页是否可用? 我尝试使用ajax调用获取响应标头,但无论我在自己的域外测试哪个站点,我都会收到错误。 那么我真的需要在我的服务器上使用代理脚本,还是我可以跳过该请求?

如何使AJAX请求看起来像常规的正常请求

我必须设置$.ajax上的哪些参数来尝试将AJAX请求作为普通请求进行掩码? 我想这与正确的标题有关。 我认为问题的一个重要部分是当处理本地.html文件时,jQuery将Origin的header-value设置为null 。 有没有办法取出Origin-header? 在这一刻,如果我通过网络浏览器浏览它并且当我执行jQuery AJAX请求时,我会从同一个URL获得不同的结果 。

从http标头响应中获取日期

好的,我可以使用访问HTTP ajax响应头 xhr.getAllResponseHeaders(); 但它似乎没有得到它的日期,虽然它在那里: [Chrome] **Response Header** Access-Control-Allow-Origin:* Cache-Control:no-cache Content-Length:8092 Content-Type:application/json; charset=utf-8 **Date:Thu, 15 Jan 2015 16:30:13 GMT** Expires:-1 Pragma:no-cache Server:Microsoft-IIS/8.0 TotalCount:116 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 并且代码仅显示以下内容: [output on alert xhr.getAllResponseHeaders();] Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 Expires: -1 这是ajax电话: $.ajax({ url: url, type: “GET”, contentType: “application/json;charset=utf-8”, async: true, success: function (data,status, xhr) { displayNewData(data); alert(xhr.getAllResponseHeaders()); […]

CORS预检请求返回“403 Forbidden”; 后续请求然后仅在Chrome中发送

在这个问题中使用pluploader失败后,我现在正在尝试FineUploader 。 在阅读了CORS之后,我在IIS6服务器上实现了各种标头。 似乎发生的事情是我的脚本触发了第一个( preflight )授权请求,该请求失败,但Chrome允许第二个( standard )请求无论如何发送 – Firefox没有。 我认为这实际上是代表Chrome的一个错误,但至少它让我得出结论我的脚本可能正常工作。 这是Chrome和FF中的第一个(预检)请求: OPTIONS /frog/LOTS/upload/php.php HTTP/1.1 Host: staff.curriculum.local User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Origin: http://frogserver.curriculum.local Access-Control-Request-Method: POST Access-Control-Request-Headers: cache-control,x-requested-with Pragma: no-cache Cache-Control: no-cache Access-Control…标头是我添加到IIS的标头。 以下是我的回复标题: HTTP/1.1 403 Forbidden Content-Length: 1758 Content-Type: text/html Server: Microsoft-IIS/6.0 […]

删除jQuery.ajaxSetup中设置的特定请求标头

我使用设置一些自定义标头 $.ajaxSetup({ headers : { ‘x-custom’ : ‘value’ } }); 它将为所有ajax请求添加x-custom标头。 但我想要一些不包含此标头的特定请求。 我试过这个,在ajax调用之前删除ajaxSettings中的头文件,并在完成后将其添加回来 delete $.ajaxSettings.headers[“x-custom”]; $.ajax({ … “success”: function (data) { $.ajaxSettings.headers[“x-custom”] = ‘value’; … } }); 但我觉得这不是正确的方法,因为在完成该调用之前触发的请求将不会获得该标头。 我还能做些什么呢? 我应该在$.ajax后面的下一行中添加标题,而不是在回调中执行吗?

JQuery-Ajax头文件问题

当我尝试使用JSON进行POST请求时,我的标题出现问题 这是代码: $.ajax({ type: “POST”, url: url, data: jsonData, dataType: ‘json’, beforeSend: function(xhrObj){ xhrObj.setRequestHeader(“Content-Type”,”application/json”); xhrObj.setRequestHeader(“Accept”,”application/json”); }, error: function(){ alert(“Fail”); }, success: function(){ alert(“Success”); } }); 这是Firebug显示的请求标题。 OPTIONS /path HTTP/1.1 Host: 192.168.15.109:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 FirePHP/0.7.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate DNT: 1 Connection: keep-alive Origin: http://localhost Access-Control-Request-Method: POST […]