发送前的Http'OPTIONS'方法而不是'删除'
我一直坚持这几个小时没有运气,所以我想我会问这里。发送前的Http'OPTIONS'方法而不是'删除'
我有一堆端点的服务,其中大部分接受GET
和POST
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阅读了过去几个小时,并尝试了一些不同的东西,所有这些都没有工作。我(认为我)至少明白,当我使用除GET
和POST
之外的http方法时,浏览器会以OPTIONS
作为http方法发送预先请求的请求。
处理这个问题的最佳方法是什么?有没有办法禁用这个预先请求的请求?我在我的客户端应用程序中指定调用此端点的http方法是DELETE
。我是否应该在调用此端点的AJAX函数中指定标题(我使用的是直接JavaScript)?
如果我不能找出解决方法,我只是要改变我的终端使用GET
或POST
方法,但我想找到一种方法来解决这个问题之前,我采取了简单的方法出。
I(认为I)至少明白,当我使用比
GET
和POST
其他HTTP方法,浏览器发送与OPTIONS
作为http方法的预排期请求。
是
有没有一种方法来禁用此档期前的要求吗?
不,没有。它由浏览器自动启动,无法从JS中禁用它。只要你在你的JS中发送这个请求的跨域请求,浏览器就会做这个预检。
我应该在我的AJAX函数中指定头文件来调用这个端点吗?
鉴于“否‘访问控制允许来源’标头出现在所请求的资源”你得到的消息,没有改变您在客户端代码做将使任何区别。
需要发送更多头来处理这个问题的地方是在服务器端。
如果我不能找出解决的办法,我只是要改变我的端点,以使用
GET
或POST
方法
你可能想,试图首先进行试验。看起来即使你做出这样的改变,你仍然会得到“否请求的资源上存在'访问控制 - 允许来源'标题”。
SO问题"No 'Access-Control-Allow-Origin' header is present on the requested resource"是一个阅读本文的好地方,可以更好地了解正在发生的事情。
你解决了吗?您是否在服务器端添加了标题中的标题? – user3748908