发送前的Http'OPTIONS'方法而不是'删除'

问题描述:

我一直坚持这几个小时没有运气,所以我想我会问这里。发送前的Http'OPTIONS'方法而不是'删除'

我有一堆端点的服务,其中大部分接受GETPOST http方法。在这种情况下,如果我的其中一个应用位于不同的域/端口并希望使用该服务,则我的服务在响应头文件中仅将Access-Control-Allow-Origin指定为*

我有一个端点使用http方法,我似乎无法得到它的工作。当我打电话从我的客户端应用程序此终结,我在控制台得到这个消息:

Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 

我一直在CORS阅读了过去几个小时,并尝试了一些不同的东西,所有这些都没有工作。我(认为我)至少明白,当我使用除GETPOST之外的http方法时,浏览器会以OPTIONS作为http方法发送预先请求的请求。

处理这个问题的最佳方法是什么?有没有办法禁用这个预先请求的请求?我在我的客户端应用程序中指定调用此端点的http方法是DELETE。我是否应该在调用此端点的AJAX函数中指定标题(我使用的是直接JavaScript)?

如果我不能找出解决方法,我只是要改变我的终端使用GETPOST方法,但我想找到一种方法来解决这个问题之前,我采取了简单的方法出。

+0

你解决了吗?您是否在服务器端添加了标题中的标题? – user3748908

I(认为I)至少明白,当我使用比GETPOST其他HTTP方法,浏览器发送与OPTIONS作为http方法的预排期请求。

有没有一种方法来禁用此档期前的要求吗?

不,没有。它由浏览器自动启动,无法从JS中禁用它。只要你在你的JS中发送这个请求的跨域请求,浏览器就会做这个预检。

我应该在我的AJAX函数中指定头文件来调用这个端点吗?

鉴于“否‘访问控制允许来源’标头出现在所请求的资源”你得到的消息,没有改变您在客户端代码做将使任何区别。

需要发送更多头来处理这个问题的地方是在服务器端。

如果我不能找出解决的办法,我只是要改变我的端点,以使用GETPOST方法

你可能想,试图首先进行试验。看起来即使你做出这样的改变,你仍然会得到“否请求的资源上存在'访问控制 - 允许来源'标题”。

SO问题"No 'Access-Control-Allow-Origin' header is present on the requested resource"是一个阅读本文的好地方,可以更好地了解正在发生的事情。