在没有CORS的情况下,跨源请求成功

时间:2016-05-10 07:50:47

标签: jquery ajax http xmlhttprequest

这让我现在怀疑自己。

我们可以通过jQuery Ajax发出POST请求。像

这样的东西
$.post("https://external.com", $('form').serialize());

在我的Chrome控制台中,我可以看到显示

的消息
  

XMLHttpRequest无法加载{external.com}。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点'mysite.com'访问。

但是,在网络选项卡中,此Ajax调用实际上返回200,当然,外部Web服务确实处理了我的请求。

任何人都可以对我有所了解,我对此感到疯狂......

非常感谢。

1 个答案:

答案 0 :(得分:-1)

我想你可能会误解CORS机制的想法。如果您仔细阅读该消息,您应该明白。

  

请求的资源上没有'Access-Control-Allow-Origin'标头。

它表示资源没有必需的标头,因此很明显浏览器必须首先发出请求才能检查资源的标头。

  因此,

Origin'mysite.com'不允许访问。

此部分还说你不允许获取跨源资源,而我认为你可能希望CORS能够像阻止脚本一样运行(例如,由攻击者注入)

您可以阅读有关CORS here的更多信息。重要的(和tl; dr ;;-))部分是:

  

跨域资源共享标准的工作原理是添加新的HTTP标头,允许服务器使用Web浏览器描述允许读取该信息的起源集。