我将脚本加载到一个域中,并用POST
和e1d1e的使用将一些数据发送到同一个域。
开发工具以某种方式告诉我,有一个失败的OPTIONS
请求。
Request URL : myurl-internal.com:8090/some/rest/api.php
Request Headers
Access-Control-Request-Headers : origin, x-requested-with, content-type
Access-Control-Request-Method : POST
Origin : http://myurl-internal.com:8090
它是HTTP而不是HTTPS。同一端口,同一主机……我不知道它为什么这样做。服务器无法处理这些东西,因此请求失败,整个系统停止工作。
3条答案
按热度按时间q0qdq0h21#
它并不是真正特定于ExtJS的——请参阅其他框架中的these related threads。是服务器正确执行了CORS标准:
对于可能对用户数据产生副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对于某些MIME类型的POST使用),规范要求浏览器“预启动”请求,使用HTTP OPTIONS请求头从服务器请求支持的方法,然后在服务器“批准”后,使用实际HTTP请求方法发送实际请求。
如果要使用CORS,则需要能够正确处理或忽略服务器上的这些请求。Ext JS本身并不关心OPTIONS请求——您将按预期收到响应,但除非您对其进行处理,否则它们将被忽略(假设服务器实际上允许您所尝试的任何操作)。
如果你不打算使用CORS(听起来你不是有意跨域),那么你需要弄清楚为什么服务器认为源域不同(我不确定这一点)。您还可以通过使用JsonP(通过Ext的JsonP代理)完全绕过CORS。
6ovsh4lw2#
使用相对url而不是绝对url,那么您将得到预期的结果。
x8diyxa73#
请求前使用