403 forbidden error in jmeter but api works fine in postman - jmeter

I have an API that is running in GET method. It works fine in postman with 200 status code. But when I try to run the API in jmeter it throws 403 forbidden error. I have configured the debug sampler and tried to re-run the test. The debug sampler passed with 200 but http request still fails.
I have tried to correlate but even that fails.
I removed the port number from the HTTP request, it still fails.
I have added the authorization manager and enter the username and password still fails.
HTTP cookie manager and cache manager added in the script.

As per HTTP Status Code 403 description
The HTTP 403 Forbidden client error status response code indicates that the server understood the request but refuses to authorize it.
This status is similar to 401, but in this case, re-authenticating will make no difference. The access is permanently forbidden and tied to the application logic, such as insufficient rights to a resource.
Most probably you have inconsistencies between requests originated from Postman and from JMeter.
There are 2 possible causes:
You failed to configure JMeter's HTTP Request sampler properly. Given your request works fine in Postman you can try to record it using JMeter's HTTP(S) Test Script Recorder
Prepare JMeter for recording. The easiest way is going for JMeter Templates Feature
From JMeter's main menu choose File -> Templates -> Recording and click "Create"
Open HTTP(S) Test Script Recorder and click "Start"
Prepare Postman for recording.
On Settings page set proxy host to 127.0.0.1 and port to 8888
Execute the request in Postman
JMeter will capture the request and store it under the Recording Controller
Postman uses specific Authorization header which cannot be recorded and replayed. Look into Authorization tab for the request and check which one is used, once you figure out - implement the same in JMeter:

Status Code 403 means you are not authorized to access it, so Ensure you are using the right Authorization for your GET call.

Add cookie manager in jmeter http sampler.

Related

Jmeter: Syntax error while sending a http delete request

We are sending a HTTP DELETE request from JMeter, but getting syntax error (Error 400 Bad request),
Request url: https://somewebsite.org/Acctid/123?AcctId=123
"AcctId=123" is in Query Parameter.
We have no specific headers except for the Cookie and Accept. No content-encoding.
The same request works perfectly fine from Postman.
Any suggestions what could be wrong with our request?
Best!
We cannot tell you what's wrong without seeing your Postman and JMeter configurations.
If the request works in Postman and doesn't in JMeter you could just record it using JMeter's HTTP(S) Test Script Recorder.
Start JMeter's HTTP(S) Test Script Recorder
Import JMeter's certificate into Postman
Configure Postman to use JMeter as the proxy
Run your request in Postman.
That's it, JMeter should generate proper HTTP Request sampler and HTTP Header Manager and you should be able to replay the request.

Not able to execute api call for delete through JMeter

I have a delete API http request in Jmeter which is like "serverName/ApplName/api/deleteDataset/{datasetId}"
In the header i have added the below information:
But strangely this api is failing with the below error:
Response code:400
Response message:Bad Request
Please note when i am trying the same API in postmen it is passing without any error. In fact i did not have to pass any header information apart from the access token.
I have tried removing the extra header information(accept,content-type) too from JMeter but that also did not work out.
If your request works fine in Postman the easiest way of replicating it in JMeter would be just recording it using JMeter's HTTP(S) Test Script Recorder
Start the HTTP(S) Test Script Recorder
Import JMeter's certificate into Postman, this way JMeter will be able to intercept and record HTTPS requests
Configure Postman to use JMeter as the proxy so the request to API would go through JMeter
Run your request in Postman
JMeter will generate HTTP Request Sampler and HTTP Header Manager
Correlate bearer token and replace hard-coded value with the appropriate JMeter Variable
You should be able to run the request successfully now

Jmeter , I'm facing 403 error when i try to run a login test

enter image description here
I used the Regular Expression Extractor for the tokens, but the 403 forbidden error keeps displaying.-check the screenshoot
Seems some missing configuration issue.
Can you please make sure:
You have HTTP Cookie Manager added to your Test Plan
If your application is protected with external authentication system like Basic HTTP Authentication, NTLM or Kerberos you need to handle it properly using HTTP Authorization Manager
Can you try :
Adding HTTP Header Manager and authorization with Basic encoded
one screenshot of the failed response headers doesn't tell the full story, you need to show us:
Successful request URL, body (if any) and headers (you can get it from browser developer tools)
Failing request from JMeter URL, body (if any) and headers from the View Results Tree listener
As per HTTP Status Code 403 description:
The HTTP 403 Forbidden client error status response code indicates that the server understood the request but refuses to authorize it.
This status is similar to 401, but in this case, re-authenticating will make no difference. The access is permanently forbidden and tied to the application logic, such as insufficient rights to a resource.
If you can successfully execute the same scenario using browser and cannot using JMeter - most probably it's due to missing or improperly implemented correlation, try recording the same steps one more time and compare generated scripts, all values which are different needs to be properly worked around

How can I resolve a 403 response code in Jmeter?

I am working with Jmeter to do load testing. I created a simple login script using BlazeMeter. Then I imported the file into Jmeter.
Whenever I try to run the script, it fails. The first problem I encounter here is that in my first http request I receive a 403 response code:
I added a cookie manager and an authorization manager to try and solve this but it is not working. I think the problem is with cors in the manager header as 403 code means that it received the petition but the access to it was denied. Do you have any suggestions on how to resolve this? I tried adding post processors but couldn't make them work. Maybe because I am a newbie to jmeter and load testing. Idk.
As per HTTP Status 403 description
The HTTP 403 Forbidden client error status response code indicates that the server understood the request but refuses to authorize it.
so most probably your request is missing some authentication context.
Your recording seems to be incomplete, you seem to be testing a GeneXus-based application and it is using AJAX_SECURITY_TOKEN header as the security parameter.
From your screenshot it seems that you're sending recorded hard-coded value, however you should design your script as follows:
Perform initial request, i.e. open login page
Extract AJAX_SECURITY_TOKEN header value using Regular Expression Extractor
Substitute this e8985.... recorded value with the JMeter Variable from the Regular Expression Extractor
Check out Using Regular Expressions to Extract Tokens and Session IDs to Variables article for more information.

403 forbidden error occurred while testing Rest client API on Jmeter

403 forbidden error occurred while testing Rest client API on Jmeter , the same API works fine on Postman.What could be the difference between Jmeter and Postman calls?
There is no trace on server logs for the call from Jmeter, whereas when I run the test on Postman, we can see the entry in server.
If you can execute request in Postman it shouldn't be a problem to record it in JMeter.
Prepare JMeter for recording
The fastest and the easiest way to configure JMeter for recording is using JMeter Templates feature. From JMeter's main menu choose File -> Template -> Recording and click "Create"
Start JMeter's HTTP(S) Test Script Recorder: Expand Workbench, choose HTTP(S) Test Script Recorder and click "Start"
Prepare Postman for recording.
You need to configure Postman to use JMeter as a proxy. Postman respects --proxy-server argument where you can specify proxy host and port
C:\Users\your_username_here\AppData\Local\Postman\app-x.x.x\Postman.exe --proxy-server=localhost:8888
Now if you execute a request in Postman JMeter will record it and convert into the relevant HTTP Request sampler

Resources