如何在java

时间:2017-01-12 07:53:05

标签: javascript ajax filter

我编写了一个servlet过滤器,其中我试图获取自定义头= samlRequest的值,从其他客户端/邮递员chrome插件我得到samlRequest的值,但使用ajax调用我提供了samlRequest键及其值但是在java中我获得了“Access-Control-Request-Headers”中唯一的关键samlRequest,如何获得samlRequest的值。

$.ajax({
             url: "http://indlin500.corp.test.com:31000/test/Portal/index.html",
             type: "GET",
             headers: { 'samlRequest': 'eJzVWVlz4roSfs6/oJhHJvECBkMRTsk2+2ow68stY8u2wBuWjQ2//srsyUlmJufOramTSjm41f '},
             beforeSend: function(xhr){xhr.setRequestHeader('samlRequest', 'eJzVWVlz4roSfs6/oJhHJvECBkMRTsk2+2ow68stY8u2wBuWjQ2//srsyUlmJufOramTSjm41f ');},
             success: function() { alert('Success!' + authHeader); }
    });
  

FirewalledRequest [   weblogic.servlet.internal.ServletRequestImpl@4f839843 [选项   /testsOSS/Portal/index.html HTTP / 1.1连接:keep-alive   访问控制请求方法:GET原点:http://10.19.121.17:7001   User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36   (KHTML,与Gecko一样)Chrome / 55.0.2883.87 Safari / 537.36   访问控制请求标题:授权,samlrequest,   x-partnerkey接受: / DNT:1 Referer:   http://10.19.121.17:7001/authentication-uxf-login-0.0.1-SNAPSHOT/customLoginPage.html接受编码:gzip,deflate,sdch Accept-Language:en-US,en; q = 0.8   ]

使用chrome rest客户端插件我在标题中获得了samlRequest,并提供了我提供的值。

  

FirewalledRequest [   weblogic.servlet.internal.ServletRequestImpl@24d746a [GET   /testOSS/Portal/index.html HTTP / 1.1连接:keep-alive   Cache-Control:no-cache samlRequest:eJzVWVlz4roSfs6 / oJhHJvECBkMRTsk2 + 2ow68stY8u2wBuWjQ2 // srsyUlmJufOramTSjm41f User-Agent:Mozilla / 5.0   (Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)   Chrome / 55.0.2883.87 Safari / 537.36 Postman-Token:   ce7765d0-94b5-a1e1-d6ba-2abada3dfdd6接受: / DNT:1   Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en; q = 0.8

     

]]

1 个答案:

答案 0 :(得分:1)

当您从浏览器发出跨源请求时,浏览器会在实际请求之前发出预检请求。这是一个 OPTIONS 请求,与预期的GET请求不同。

尝试在实际过滤器之前添加CORS过滤器,该过滤器将对任何OPTIONS请求回复OK。可在此处找到示例代码:

https://amodernstory.com/2014/12/27/using-cors-headers-with-java-example/

顺便说一下,您不需要在请求中设置两次标头。您可以从ajax请求中删除beforeSend块。