我正在使用jQuery的ajax
方法向我的Elastic的_search
API发出POST
请求。
在查询中传递参数时,一切都很好:
$.ajax({
url: '//localhost:9200/my_index/_search/?q=hello',
method: 'POST'
}).then(function(body){
console.log(body);
});
在正文(json)中传递参数时,问题开始出现:
$.ajax({
url: '//localhost:9200/my_index/_search/',
method: 'POST',
dataType: 'json',
contentType: "application/json",
data: this.params
}).then(function(body){
console.log(body);
});
浏览器(Chrome)不发送POST
请求,而是发送OPTIONS
请求。
阅读jQuery的留档我看到:
对于跨域请求,将内容类型设置为Application/x-www-form-urlencoded、multipart/form-data或text/平原以外的任何内容都将触发浏览器向服务器发送预检OPTIONS请求。
所以这可能就是它的来源。
问题是,在预飞行请求之后什么也没发生。
查看Wireshark中的请求本身:
OPTIONS /my_index/_search/ HTTP/1.1
Host: localhost:9200
Connection: keep-alive
Cache-Control: max-age=0
Access-Control-Request-Method: POST
Origin: http://localhost:4000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
Referer: http://localhost:4000/search/?q=hello
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,fr;q=0.6
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods:
Access-Control-Max-Age: 1728000
date: Tue, 12 Apr 2016 07:30:50 GMT
content-length: 0
我注意到响应的Access Control Allow Methods
字段是空的,所以我认为它可能与此相关。
我的弹性搜索。yml文件包含:
http.cors.enabled: true
http.cors.allow-origin: "*"
我补充说:
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
但这并没有改变任何事情。
这是由该问题引起的,该问题已得到修复,将在2.3.2中发布
在我的php文件中,我有以下内容来创建一个带有FPDF库的PDF: 但是请求是响应这个,而不是打开一个保存对话框来保存我的PDF。 %PDF-1.3 3 0 obj<>endobj 4 0 obj<>stream x 3 R@2π35 W(çR qπw 3 t04多30 pispéz*[(hx·ääää+çó)·(j*dé7 w endstream endobj 1 0 obj /xobject<
问题内容: 我正在编写一个Web应用程序,该应用程序使用AJAX检索大量数据,该AJAX基本上根据用户单击的按钮修改了加载的页面(假设单击button1会将页面从state0转到state1,依此类推。) 此外,如果将按钮号作为GET变量传递给服务器,则服务器将返回正确状态的页面。 不用说,后退/前进浏览器按钮不起作用,因为在通过AJAX完成状态更改期间URL不会更改。 所以,我的问题是,如何使浏
问题内容: HTTP请求的标头中是否有任何内容可以区分给定客户端的AJAX调用和直接浏览器请求?用户代理字符串通常是否相同? 问题答案: 如果您使用Prototype,jQuery,Mootools或YUI,则应该找到一个 X-Requested-With:XMLHttpRequest 标头,它将为您解决问题。应该可以在其他库中插入任何您喜欢的标头。 在最低级别上,给定XMLHttpRequest
我想运行和控制一个浏览器窗口从一个web应用程序,以自动化的一些事情(如帐户创建等)在另一个网站。 所以我的问题是,有没有一种方法可以直接从浏览器使用selenium来实现它,在这种情况下如何实现它? 我知道有selenium-webdriver for JS,但在常见的用例中,我们将它与Node.JS一起使用。 WebDriver介绍建议这是可能的: 它的主要目的是允许web作者编写测试,使用户
网上有一点信息,大部分都过时了。有没有人知道,我们怎么用视窗平台上的Tor浏览器或TOR上的硒来请求?来自stackowerflow的所有其他答案都不起作用...
这是我的应用程序云环境。我有ELB和sticky session- 我正在处理一个需要1分钟以上的请求。我在处理请求开始时记录IP地址。当我通过浏览器处理这个请求时,我看到重复的请求在1分几秒后被记录下来。如果首先从HAProxy1请求路由,则另一个请求从HAProxy2路由。在浏览器上,我在2.1分钟后得到HttpStatus=0响应 我的问题是ELB触发了这个重复请求。请帮助我验证这个假设。