首页 文章

如何在java中获取头值

提问于
浏览
1

我写了一个servlet过滤器,其中我试图获取自定义header = 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 [OPTIONS /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 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en; q = 0.8]]

使用chrome rest客户端插件我在 Headers 中获得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接受编码: gzip,deflate,sdch Accept-Language:en-US,en; q = 0.8]]

1 回答

  • 1

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

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

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

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

相关问题