jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery和跨域POST请求大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个jQuery插件,它将成为某些REST API的连接器.
实施是直截了当的,但同样的原产地政策肯定是痛苦的.
我需要执行大多数POST请求.

我也尝试实现OPTIONS方法并返回(是python,但意思应该是清楚的)

def options(self):
  self.response.headers['Access-Control-Allow-Origin'] = self.request.host_url
  self.response.headers['Access-Control-Allow-Methods'] = 'POST,GET,OPTIONS'
  self.response.headers['Access-Control-Allow-Headers'] = 'x-requested-with'
  self.response.headers['Access-Control-Max-Age'] = '1728000'

仍然不起作用……任何想法?

PS:我已经看到有类似主题的其他问题,但我需要POST方法的特定解决方案(可以通过使用iframe轻松实现GET)

Javascript示例:

$.ajax({
    url: options.protocol+'://'+options.host+':'+options.port+'/'+method,data: rawData,async:false,dataType: "json",type:"POST",success:function(data)
    {
        alert('asd');
        result.data = data;
        alert(data);
    },error:function(lol){
        alert('omggg !!!!'+lol);
    }

});

编辑:添加了javascript代码示例

解决方法

有时候这有点小提琴,有些想法:

> CORS仅支持相当现代的浏览器,因此您需要确保使用其中一种.
> IE仅通过@L_@R_197_11280@_10@对象支持CORS,而不是标准的XML@R_616_10107@request对象,但是jQuery并没有特别满足(但是我不得不承认我有点惊讶并期望它会在不久之前),所以你必须添加特殊处理以使其在IE上工作(然后只有IE8及更高版本).编辑:令人震惊的是,显然jQuery团队已经有了这个请求并拒绝了它:ticket #8283这没有任何意义.
>您确定Access-Control-Allow-Origin值吗?看起来它只允许从服务器访问它.该标头用于指定服务器允许请求来源的起源. (*允许,意思是“任何地方.”)
>我似乎记得在我的Firefox实验中,我在回答它没有要求的OPTIONS请求时允许方法很挑剔.
>仔细检查您是否允许请求发送的所有标头;在你的例子中看起来你只允许一个标题(x-requested-with),但我打赌在实际请求中会有其他标题.

FWIW(我不是Python人),这是我的JSP代码可行,也许它会很有用 – 我认为对象名称很清晰,即使你不做Java也可以读取(谁知道,也许你做):

String corsOrigin,corsMethod,corsHeaders;

// Find out what the request is asking for
corsOrigin = request.getHeader("Origin");
corsMethod = request.getHeader("Access-Control-request-Method");
corsHeaders = request.getHeader("Access-Control-request-Headers");
if (corsOrigin == null || corsOrigin.equals("null")) {
    // requests from a `file://` path seem to come through without an
    // origin or with "null" (literally) as the origin.
    // In my case,for tesTing,I wanted to allow those and so I output
    // "*",but you may want to go another way.
    corsOrigin = "*";
}

// Add headers allowing specifically what was requested
response.addheader("Access-Control-Allow-Origin",corsOrigin);
response.addheader("Access-Control-Allow-Methods",corsMethod);
response.addheader("Access-Control-Allow-Headers",corsHeaders);
if (request.getmethod().equals("OPTIONS"))
{
    // Done,no body in response to OPTIONS
    return;
}
// Processing the GET or POST here; output the body of the response

请注意,我对GET,POST和OPTIONS使用了完全相同的逻辑,除了在OPTIONS的情况下,我没有输出响应体.

大佬总结

以上是大佬教程为你收集整理的jQuery和跨域POST请求全部内容,希望文章能够帮你解决jQuery和跨域POST请求所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。