2012-03-23 139 views
1

时,我有以下情况:更改浏览器标题重定向

浏览器做了POST有一个JSON有效载荷到我的服务器端点

我的服务器处理数据,然后发出一个重定向到新的位置

浏览器做了重定向,但它使用与原始帖子相同的头文件,它意味着它到达我的终端,这样我的端点 认为它是一个json请求。

- >我希望重定向到达我的服务器作为标准的文本/ html请求。

是否有可能控制重定向使用的标题,以便Get请求以text/html Accept头到达?

以下是小提琴手一些片段来突出我所讲的:

初始后,JSON有效载荷:

POST /App/Client/Index HTTP/1.1 
Accept: application/json, text/plain, */* 
X-Requested-With: XMLHttpRequest 

响应:

<html><head><title>Object moved</title></head><body> 
<h2>Object moved to <a href="%2App%2fClient%2f%2fSingleEntity%3fentityId%3df859a6ca-dbcf-49cf-8de0-3888b7011815">here</a>.</h2> 
</body></html> 

从该subsequest GET请求重定向:

GET /App/Client/SingleEntity?entityId=f859a6ca-dbcf-49cf-8de0-3888b7011815 HTTP/1.1 
Accept: application/json, text/plain, */* 
X-Requested-With: XMLHttpRequest 

回答

0

我有类似的要求。我的解决办法是不发送重定向,而是一个“200 OK”具有以下JSON:

{"url": "http://example.com/redirect/to/some/resource"} 

客户端使用的URL,并通过JavaScript重定向,即location.href = data.url。它可能不是你正在寻找的答案,但它解决了你的问题...

另请参阅:How to manage a redirect request after a jQuery Ajax call