gpt4 book ai didi

javascript - jquery $.ajax get 将通过 http 获取文件,但在直接与服务器对话时失败,X-Requested-With 设置不正确?

转载 作者:行者123 更新时间:2023-11-30 18:29:47 26 4
gpt4 key购买 nike

我无法让 jquery (1.6.1) 与本地服务器(在同一台机器上)通信,尽管据我所知服务器生成的内容看起来是正确的。

作为测试,我将服务器输出放在一个文件中,然后访问它,它有效:

var url = "http://localhost/web-from-hols/viz/library/test4.json"

$.ajax({
url: url,
dataType: "json",
cache: false,
type: 'GET',
error: that.searchError,
success: that.searchSuccess,
complete: function(){dom.find('#loadingImg').hide();dom.find('.button').show();searching=false;}
})

但是...将 url 直接指向本地服务器,但它失败了,状态为 0

var url = "http://127.0.0.1:8080/"+key

嗅探 http header ,我看到以下调用和响应,用于工作...

http://localhost/web-from-hols/viz/library/test4.json?_=1333363765977

GET /web-from-hols/viz/library/test4.json?_=1333363765977 HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0 Accept: application/json, text/javascript, */*; q=0.01 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate DNT: 1 Connection: keep-alive X-Requested-With: XMLHttpRequest Referer: http://localhost/web-from-hols/viz/viz.html


HTTP/1.1 200 OK Date: Mon, 02 Apr 2012 10:49:25 GMT Server: Apache/2.2.20 (Ubuntu) Last-Modified: Mon, 02 Apr 2012 02:28:15 GMT Etag: "42e020c-137f-4bca8f1467744" Accept-Ranges: bytes Content-Length: 4991 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/json

对于不工作的,我看到:

http://127.0.0.1:8080/EP1186609?_=1333370799152

GET /EP1186609?_=1333370799152 HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Referer: http://localhost/web-from-hols/viz/viz.html
Origin: http://localhost


HTTP/1.1 200 OK
Date: Mon, 02 Apr 2012 02:33:43 GMT
Server: Apache/2.2.20 (Ubuntu)
Last-Modified: Mon, 02 Apr 2012 02:28:15 GMT
Etag: "42e020c-137f-4bca8f1467744"
Accept-Ranges: bytes
Content-Length: 4991
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json

我能看到的唯一真正区别是工作请求包括

X-Requested-With: XMLHttpRequest

虽然非工作已添加,但在非工作中缺少:

Origin: http://localhost

我试着用代码添加这个

 $.ajaxSetup({ 
headers: {"X-Requested-With":"XMLHttpRequest"}
});

但这似乎没有帮助,而不是添加行

X-Requested-With: XMLHttpRequest

我看到添加了以下内容

Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-requested-with

坦率地说,我不明白发生了什么,我读到 jquery 有时在发出请求时会省略“X-Requested-With: XMLHttpRequest”值,或者它可能是跨站点问题,可能.. :-(

这个问题已经困扰我们两个人一天了,非常感谢任何帮助。

最佳答案

您不能将正常的 AJAX 请求发送到另一个域(即使该域解析到同一台机器)或不同的端口。 Firefox 正在尝试发送 CORS请求,但在您的服务器未返回表示您允许 CORS 请求的 header (例如 Access-Control-Allow-Origin: *)后停止它。

关于javascript - jquery $.ajax get 将通过 http 获取文件,但在直接与服务器对话时失败,X-Requested-With 设置不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com