https-options请求仅在Safari 10 Mac和iOS cors中失败(400错误请求)

时间:2017-01-10 08:16:18

标签: javascript ios macos safari cors

选项请求始终失败( 400错误请求),尤其是在 MAC OSX和iOS 10 上的HTTPS环境中 SAFARI 。 Chrome和其他浏览器运行正常(200)。我们几乎尝试了所有我们所知道的解决方案,但似乎没有任何效果。以下是带有跨域选项标题的ajax调用:

$.ajax(
    {
        headers: {
            Accept : "application/json",
            'Content-Type': "application/json"
        },
        type : "POST",
        url : userDataSource,
        contentType: "application/json",
        data : JSON.stringify(formData),
        dataType : 'json', 
        xhrFields :{
            withCredentials: true
        },
        crossDomain : true,
        success : function(data){........}}).....

我们尝试对javascript进行以下修改:

  • 修改预检标题(接受和内容类型)
  • 删除标题。
  • 将标题更改为小写,反之亦然。
  • 根据响应标头添加一些标头。

我们在服务器端也进行了类似的更改,并进行了一些代理级别的更改,但没有任何帮助。它不是一个公共Web应用程序,而是它的内部组织网络。

对我们来说解决它非常重要,因为它会阻止交付。

请帮忙。

enter image description here

1 个答案:

答案 0 :(得分:0)

这看起来像服务器问题,当在使用的服务器平台上没有信息时很难弄清楚。 您是否尝试调试抛出400 Bad Request的代码?日志文件中可能还有更多信息。 当你说这只是Safari和iOS中的一个问题时,它可能是由请求中不同的User-Agent引起的(只是一个猜测)。

与工作请求相比,您是否检查了请求中是否有其他HTTP标头不同(确保比较OPTIONS请求,而不是POST)。您可以尝试使用Fiddler或Postman将请求的某些变体缩小到特定原因。

我很抱歉没有明确答案,也许您可​​以提供有关服务器的更多信息。