英文:
Azure giving error with long URL with Token
问题
I have hosted a front end app using React and React Router Dom to Azure.
I have a reset password link with token as below:
This works fine with localhost. However, in Azure, it gives this error:
"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."
I have already added the web.config that was suggested in a few posts. It works for shorter URLs but not sure how to make it work for bigger URLs with tokens.
英文:
I have hosted a front end app using React and React Router Dom to Azure.
I have a reset password link with token as below
This work fine with localhost. However in Azure it gives this error
"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."
I have already added the web.config that was suggested in few posts. It works for shorter URL but not sure how to make it work for bigger urls with tokens.
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<httpRuntime maxQueryStringLength = "10000" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="React Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<requestLimits maxQueryString="10000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
答案1
得分: 0
以下是您要翻译的内容:
"The error message is due to the length of the URL with the token.
Azure has a default limit of 2048 characters for URLs. You can increase the limit by adding the following configuration to your web.config file.
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<httpRuntime maxQueryStringLength = "32768" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="React Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
As per the Azure Web App URL Length Limitations. The increase in the maximum length of the query string to 32768 characters.
And you need to adjust the maxQueryStringLength value in the httpRuntime element to match the new limit you set in the requestLimits element.
Approach 2
const myToken = "long token";
const encoded_Token = encodeURIComponent(myToken);
const reset_PasswordUrl = `https://somesample.com/reset-password/${encoded_Token}`;
And it is a good practice to ensure that the URL is properly formatted and can be parsed correctly by the server.
If the token is too long, it may exceed the maximum URL length allowed by Azure. In this case, you need to consider using a POST request instead of a GET request to pass the token.
Alternatively, you can try shortening the token by using a tokenization service or by generating a shorter token.
Another option is storing the token in a database and passing a unique identifier in the URL instead of the entire token.
For further information refer to the SO link."
英文:
>The error message is due to the length of the URL with the token.
Azure has a default limit of 2048 characters
for URLs. You can increase the limit by adding the following configuration to your web.config
file.
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<httpRuntime maxQueryStringLength = "32768" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="React Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
As per the
Azure Web App URL Length Limitations.
The increase in the maximum length of the query string to 32768 characters.
And you need to adjust the maxQueryStringLength
value in the httpRuntime
element to match the new limit you set in the requestLimits
element.
Approach 2
const myToken = "long token";
const encoded_Token = encodeURIComponent(myToken);
const reset_PasswordUrl = `https://somesample.com/reset-password/${encoded_Token}`;
And it is a good practice to ensure that the URL is properly formatted and can be parsed correctly by the server.
>If the token is too long, it may exceed the maximum URL length allowed by Azure. In this case, you need to consider using a POST request instead of a GET request to pass the token.
Alternatively, you can try shortening the token by using a tokenization service or by generating a shorter token.
Another option is storing the token in a database
and passing a unique identifier in the URL
instead of the entire token.
For further information refer to the SO link.
答案2
得分: 0
SOLVED: 请使用以下内容。看起来这是一个错误,他们在2019年修复了它,链接在github.com/Azure/azure-functions-host/pull/3916
<security>
<requestFiltering allowDoubleEscaping="true">
<requestLimits maxAllowedContentLength="104857600" maxUrl="8192" maxQueryString="2048"/>
</requestFiltering>
</security>
英文:
SOLVED: Please use below. It seems this was a bug and they fixed it in 2019 github.com/Azure/azure-functions-host/pull/3916
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
<security> <requestFiltering allowDoubleEscaping="true"> <requestLimits maxAllowedContentLength="104857600" maxUrl="8192" maxQueryString="2048"/> </requestFiltering> </security>
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论