JQuery POST请求转换为OPTIONS。为什么?

时间:2011-01-11 09:34:16

标签: jquery ajax post response options

我明确指定了一个POST,但我没有看到请求中的帖子数据,并且更多地指出它有一个OPTIONS。

响应应该是一个HTML,用于指定以表格格式匹配用户的查询。 我试图发布和阅读html来创建一个自动完成输入框。

这是Jquery代码:

$.post('https://internal.company.com/data/displayUserList',
    { Email: "", Name: "%GEORGE%"}, 
    function(responseText, textStatus) {
        console.log("Response:\n" + responseText + textStatus)
    }
);

FireBug1.6.1(Firefox)捕获的请求

OPTIONS /data/displayUserList HTTP/1.1
Host: internal.company.com
User-Agent: Mozilla/5.0 Firefox/3.6.8
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
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST

2 个答案:

答案 0 :(得分:10)

如果您违反same origin policy限制,可能会发生这种情况。 Access-Control-Request-Method请求标头让我觉得是这种情况。我看到您在帖子请求中指定了完整地址https://internal.company.com/data/displayUserList。确保托管此脚本的页面也来自https://internal.company.com。最好的方法是使用相对地址:

$.post('/data/displayUserList', { Email: "", Name: "%GEORGE%" }, 
    function(responseText, textStatus) {
        console.log("Response:\n" + responseText + textStatus);
    }
);

答案 1 :(得分:0)

如果您尝试在另一个域中调用其他服务器,则解决此问题的策略应放在后端,以使服务器允许来自其他前端域的调用,在这种情况下,您不应中断试图在前端调整它。