我正在尝试发出跨源发帖请求,并且使它JavaScript
像下面这样简单地工作:
var request = new XMLHttpRequest();
var params = "action=something";
request.open('POST', url, true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.send(params);
但是我想使用jQuery
,但是我无法使用它。这是我正在尝试的:
$.ajax(url, {
type:"POST",
dataType:"json",
data:{action:"something"},
success:function(data, textStatus, jqXHR) {alert("success");},
error: function(jqXHR, textStatus, errorThrown) {alert("failure");}
});
这导致失败。如果有人知道为什么jQuery
不起作用,请告诉我们。谢谢。
(我正在使用jQuery
1.5.1和Firefox 4.0,并且我的服务器使用正确的Access-Control-Allow- Origin
标头进行响应)
更新:正如TimK所指出的,jQuery 1.5.2不再需要此功能。但是,如果要添加自定义标题或允许使用凭据(用户名,密码或cookie等),请继续阅读。
我想我找到了答案!(4小时后又进行了很多诅咒)
//This does not work!!
Access-Control-Allow-Headers: *
您需要手动指定将接受的所有标头(至少在FF 4.0和Chrome 10.0.648.204中,这是我的情况)。
jQuery的$ .ajax方法为所有跨域请求发送“ x-requested-with”标头(我认为这是唯一的跨域)。
因此,响应OPTIONS请求所需的缺少标头是:
//no longer needed as of jquery 1.5.2
Access-Control-Allow-Headers: x-requested-with
如果要传递任何非“简单”标头,则需要将它们包括在列表中(我再发送一个):
//only need part of this for my custom header
Access-Control-Allow-Headers: x-requested-with, x-requested-by
综上所述,这是我的PHP:
// * wont work in FF w/ Allow-Credentials
//if you dont need Allow-Credentials, * seems to work
header('Access-Control-Allow-Origin: http://www.example.com');
//if you need cookies or login etc
header('Access-Control-Allow-Credentials: true');
if ($this->getRequestMethod() == 'OPTIONS')
{
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Max-Age: 604800');
//if you need special headers
header('Access-Control-Allow-Headers: x-requested-with');
exit(0);
}
我用ReactJS制作了一个网络应用程序。它在本地主机上运行良好。然而,当我部署到Azure时,每次导航到新页面或重新加载页面时,我都会收到404个错误。 我正在使用Browser路由器,我从网上查看中了解到这有时会导致问题,但我还没有找到解决它的方法。 我在 GitHub 中有该应用程序,因此在 Azure 中我链接到存储库。除了由create-react-app生成的代码外,我还有一个web.
问题内容: 我在节点和角度的CORS上遇到了问题,并为true添加此选项解决了我的问题。但是我找不到有关它是什么以及它在做什么的信息。请有人可以解释吗? 问题答案: 简短答案: 使您的浏览器在XHR请求中包含cookie和身份验证标头。如果您的服务依赖于任何cookie(包括会话cookie),则仅在使用此选项集的情况下才能使用。 更长的解释: 当您向其他原始服务器发出Ajax请求时,浏览器可能会
问题内容: jQuery如何使用普通的JavaScript?例如, 什么是JavaScript的方式来询问是否有? 问题答案: 您可以检查是否匹配。 匹配一个单词中断。 或者,您可以使用jQuery自己的实现: 为了回答您的更一般性的问题,您可以在github上查看jQuery的源代码,或者在此源代码查看器中专门查看源代码。
参考Java的Fork/Join vs ExecutorService-何时使用哪个?,传统的线程池通常用于处理许多独立请求;用于处理连贯/递归任务,其中一个任务可能会产生另一个子任务并稍后加入。 那么,为什么Java-8的默认使用而不是传统的执行器? 在许多情况下,我们在或之后使用,然后提交一个函数式接口作为参数。从我的角度来看,这些任务是独立的,不是吗?
我有一个JavaFX应用程序,它调用一些JNI代码,使用预加载程序jar,并使用JDK1.7编译。现在,当我使用JRE7在另一台计算机上运行jar时,通过: 双击jar:它启动,但无法加载包含库的JNI代码,因此被卡住。 有人能告诉我这三种情况有什么不同吗?
问题内容: 在Chrome浏览器中,它会像应有的那样执行HTTP PUT,但在FireFox 21中却没有。在javascript控制台或后端中没有错误。 这是HTML: 这是jQuery: 我在Fiddler中观察到了它们,并且正常工作(Chrome)和无效工作(Firefox)之间的区别是HTTP PUT在Chrome中启动,而在Firefox中不启动。 现在,我知道并不是所有浏览器都可以保证