我目前的代码:
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Mall[] malls = restTemplate.getForObject(url, Mall[].class);
Run Code Online (Sandbox Code Playgroud)
我需要在表单中为我的请求添加一些自定义标头:
X-TP-DeviceID : <GUID>
Run Code Online (Sandbox Code Playgroud)
在我的案例中,最简单的方法是什么?restTemplate在将请求发送到服务器之前,有没有办法向我的对象添加自定义标头定义?
[编辑]
这是对的吗?
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.set("X-TP-DeviceID", "1234567890");
HttpEntity entity = new HttpEntity(headers);
HttpEntity<Mall[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, Mall[].class);
Mall[] malls = response.getBody();
Run Code Online (Sandbox Code Playgroud)
[添加]
所以,我设法让它工作.但是,我对此并不完全满意.在我的情况下,我将需要为我所做的所有调用提供相同的自定义标头.
所以,我的下一个问题是 - 是否可以设置我的自定义标头在每次web-service调用时自动添加,例如,通过扩展RestTemplate类并将所有自定义标头放在那里?然后,我需要做的就是简单地使用我的自定义扩展RestTemplate而不是库存扩展,默认情况下我的所有自定义标头都会出现在那里.
我想在python中向Selenium PhantomJS添加"自定义标题".这些是我想要添加的标题.
headers = { 'Accept':'*/*',
'Accept-Encoding':'gzip, deflate, sdch',
'Accept-Language':'en-US,en;q=0.8',
'Cache-Control':'max-age=0',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
from selenium import webdriver
service_args = [
'--proxy=127.0.0.1:9999',
'--proxy-type=socks5',
]
driver = webdriver.PhantomJS(service_args=service_args)
driver.set_window_size(1120, 550)
driver.get("https://duckduckgo.com/")
driver.find_element_by_id('search_form_input_homepage').send_keys("realpython")
driver.find_element_by_id("search_button_homepage").click()
print driver.current_url
driver.quit()
Run Code Online (Sandbox Code Playgroud)
如何修改包含这些自定义标头的代码?
请帮忙.
或者如何在新建ChromiumWebBrowser实例时将自定义标头注入到站点的初始请求中.
我是Chromium的菜鸟,可以真正使用一些帮助.我有一个带CEF窗口的winforms应用程序.K,到目前为止没有问题.我需要做的是使用包含身份验证信息的自定义http-header调用/加载初始URL.这可能吗?
以下基本上是正在发挥作用的所有部分工作,除了自定义标题(Doh!)
Winform(CEF httpRequest(带有自定义标头))[永远不会超过这一点] => C#MVC web app => Owin_Authentication_Pipeline segment => MVC响应,带有填充的Razor视图=>显示在Winform Chromium应用程序中.
也许这也会有所帮助:
using CefSharp;
using CefSharp.WinForms;
...
private void Form1_Load(object sender, EventArgs e)
{
Cef.Initialize();
ChromiumWebBrowser myBrowser = new ChromiumWebBrowser("whatever.com");
// ??How do i get a custom header be sent with the above line??
myBrowser.Dock = DockStyle.Fill;
//myBrowser.ShowDevTools();
//myBrowser.RequestHandler = new DSRequestHander();
//myBrowser.FrameLoadStart += myBrowser_FrameLoadStart;
this.Controls.Add(myBrowser);
}
Run Code Online (Sandbox Code Playgroud)
我把它弄死了,看了看,尝试了我工具箱中的所有技巧,然后是一些.
我非常感谢任何想法,帮助或暗示我如何能够解决或绕过这个boggler.提前致谢.
由于您无法在JSONP调用上应用自定义标头,如何使用jQuery创建跨域请求并应用自定义标头?
我基本上试图使用jQuery访问谷歌文档,并需要传递身份验证令牌:
var token = "my-auth-token";
$.ajax({
url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
},
success: function(data, textStatus, XMLHttpRequest) {
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
}
});
Run Code Online (Sandbox Code Playgroud)
注意:这样做的目的是完全绕过应用程序层.使用ruby连接到Google Data API很简单,但是它会占用很多资源,一直在服务器端解析Feed.
我需要在Django项目中设置自定义响应标头。
这是来自facts / urls.py的代码:
d = {
'app_name': 'facts',
'model_name': 'Fact'
}
urlpatterns = patterns('',
(r'^$', 'facts.main', d),
)
Run Code Online (Sandbox Code Playgroud)
这种方法显示模型中的数据,但是我不确定是否可以在此处设置自定义标头?
我还尝试了另一种方法-我使用以下功能创建了facts / views.py:
def fact(request):
response = render_to_response('facts.html',
{'app_name': 'facts',
'model_name': 'Fact'},
context_instance=RequestContext(request))
response['TestCustomHeader'] = 'test'
return response
Run Code Online (Sandbox Code Playgroud)
并更改了urls.py中的代码:
(r'^$', facts.views.fact),
Run Code Online (Sandbox Code Playgroud)
此方法设置自定义标头,但不显示模型中的数据。
有什么帮助吗?
我使用X-Accel-Redirectnginx 在rails中提供受限制的下载.为了在客户端应用程序中验证我的下载,我试图将非标准HTTP标头中的校验和发送Content-MD5到X-Accel-Redirect请求.但这不起作用.
用于执行重定向的rails片段下方
headers['X-Accel-Redirect'] = '/download_public/uploads/stories/' + params[:story_id] +'/' + params[:story_id] + '.zip'
headers['X-Accel-Expires'] = 'max'
checksum = Digest::MD5.file(Rails.root.dirname.to_s+'/public/uploads/stories/' + params[:story_id] +'/' + params[:story_id] + '.zip').hexdigest
headers['Content-MD5'] = checksum
request.session_options[:skip] = true
render :nothing => true, :content_type => MIME::Types.type_for('.zip').first.content_type
Run Code Online (Sandbox Code Playgroud)
这是nginx部分
location /download_public {
internal;
proxy_pass_header Content-MD5;
add_header Cache-Control "public, max-age=315360000";
add_header Content-Disposition "inline";
alias /var/www/sss/public;
}
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.我无法在我的回复中获得Content-MD5标题.有没有办法从rails传递我的Content-MD5标题?
我知道有很多方法可以在nginx中完成,比如使用perl或lua编译nginx,并且可以轻松地计算MD5.但我不想这样做.
任何帮助深表感谢.
我需要发送一个头的GET请求:Content-Type: application/camiant-msr-v2.0+xml。我期望来自服务器的 XML 响应。我用 Postman 测试了请求和响应,一切都很好。但是当我尝试在 Spring 中使用 时RestTemplate,我总是收到 400 个错误的请求。例外情况spring是:
Jul 09, 2016 12:53:38 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/smp] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 400 Bad Request] with root cause
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)
Run Code Online (Sandbox Code Playgroud)
我的代码:
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/camiant-msr-v2.0+xml");
HttpEntity<?> entity = new HttpEntity<Object>(headers);
log.debug("request headers: …Run Code Online (Sandbox Code Playgroud) 当我EventSource在 JavaScript 中创建一个 new来侦听服务器发送的事件时,如下所示:
var source = new EventSource("data/pushed");
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我在传出的 HTTP 请求中指定额外的标头(比如一些身份验证令牌)?
我知道,使用web.ctx.env,我可以从标题中获得大量信息 - 但只有标准标题.是否可以从web.py中的GET或POST方法中获取所有HTTP请求标头?
我使用发送请求时遇到问题Alamofire.我想发送一个带参数的POST请求,但我不知道在哪里放置自定义标头,如令牌.
这是我的代码:
let parameters = [
"id": ID,
"recipient_id" : recipientID,
"is_match" : "1"
]
Alamofire.request(.POST, Constants.baseURL + Constants.apiURL + Constants.accept, parameters: parameters, encoding: .JSON)
.validate()
.response { request, response, data, error in
print(request)
print(response)
print(data)
print(error)
}
.responseJSON { response in
switch response.result {
case .Success:
print("Approve Successful")
print("approve \(response)")
case .Failure(let error):
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我正在使用 Alamofire 3.4
custom-headers ×10
python ×3
javascript ×2
rest ×2
spring ×2
ajax ×1
alamofire ×1
c# ×1
cefsharp ×1
cross-domain ×1
django ×1
http ×1
http-headers ×1
httprequest ×1
ios ×1
java ×1
jquery ×1
nginx ×1
phantomjs ×1
resttemplate ×1
selenium ×1
swift ×1
web.py ×1
winforms ×1