我明确指定了POST,但在Request中看不到该Post数据,并且超过了它指定了OPTIONS。
响应应为HTML,以表格格式指定要与Query匹配的用户。
我正在尝试发布和阅读html,以创建一个自动完成的输入框。
这是jQuery代码:
$.post('https://internal.company.com/data/displayUserList',
{ Email:"", Name:"%GEORGE%"},
function(responseText, textStatus) {
console.log("Response:
" + 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
关于SE上的jQuery,有许多与此相关的问题。 请参阅"相关",这里讨论了可能的解决方案:stackoverflow.com/questions/2699277/post-data-to-jsonp
如果您违反相同的原始策略限制,则可能会发生这种情况。 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:
" + responseText + textStatus);
}
);
是。我正在尝试在另一个网页中发布URL,但是顶级域名是相同的" company.com",我将检查" document.domain"是否相同。我还注意到从浏览器触发" internal.company.com/data/displayUserList"时发送的Cookie信息很少。有没有办法我可以捕获它们并随此请求发送?
协议是否相同?请注意,HTTP vs HTTPS违反了相同的原始策略。就cookie而言,如果已将cookie设置为具有等于顶级域的domain属性,则它们将沿着AJAX请求自动发送,以便可以在这些域之间共享它们。
是的,协议是HTTPS。我注意到Cookie除了OPTIONS问题外没有被拾起。我应该更改通话中的任何内容吗?
@hashg,域必须匹配:https:internal.company.com和https:company.com不相同,并且违反了该策略。请查看答案中链接到的Wikipedia文章,并确保域和子域完全匹配。否则,您的AJAX调用将始终失败。
如果您尝试在另一个域中调用其他服务器,则解决此问题的策略应放在后端,以使服务器允许来自其他前端域的调用,在这种情况下,您不应该费劲地尝试 在前端进行调整。